python - 条目小部件内容不随函数调用而改变

标签 python tkinter tkinter-entry

每当显示 tkinter 框架时,我都需要更改条目的内容。以下是我到目前为止所拥有的,但似乎不起作用。我尝试使用 data = self.read() 然后使用 now.insert(0, data) 但这也不起作用。如果显示该值,则每次调用类 ReadLabel1 时该值都不会更改。

class ReadLabel1(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent, bg="blue")

        label = tk.Label(self, text="SomeData:", font = "Times 12", bg="blue")
        label.place(x=10, y=100) #ack(pady=5,padx=30)

        self.smStr = tk.StringVar()
        now=tk.Entry(self, width=22, textvariable=self.read())
        now.place(x=120, y=103)

    def read(self):
        # code to get data
        return data

最佳答案

您需要将“更改条目的内容”转换为单参数回调,将“每当显示 tkinter 框架”转换为事件,然后将应用程序、事件和回调绑定(bind)在一起。这是一个最小的例子。

import time
import tkinter as tk

root = tk.Tk()
now = tk.StringVar()
lab = tk.Label(root, textvariable=now)
lab.pack()
def display_now(event):
    now.set(time.ctime())
root.bind('<Visibility>', display_now)
root.bind('<FocusIn>', display_now)

将窗口最小化为图标并将其恢复会触发 Visibility 事件。用不同的窗口覆盖和仅仅揭开则不然,至少在 Windows 中不行。单击未覆盖或仅未激活的窗口会触发 FocusIn。您可以对您的系统进行更多实验。我用过这个tkinter reference

关于python - 条目小部件内容不随函数调用而改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32299106/

相关文章:

python - 图像未显示在 Tkinter 中的标签上

tkinter - 如何找出小部件的顶级容器?

python - 如果在python tkinter中输入为空,如何将输入值设置为零?

python - 为什么不能在类的实例上设置属性?

python - 使用 zipfile 读取受密码保护的 Word 文档

python - Pandas :旋转数据框并保留其他非数字列

python - 将两个窗口结果放入具有两个选项卡的窗口中

python - 为什么 Python 文档声明 "all immutable built-in objects are hashable"?

python - 创建多行文本输入的更好方法?

python - Tkinter 使用复选按钮禁用多个条目