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

时间:2015-08-30 17:07:59

标签: 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

1 个答案:

答案 0 :(得分:2)

您需要将'将条目的内容更改'转换为单参数回调,将'tkinter框架'显示'转变为事件,然后将应用,事件和回调绑定在一起。这是一个最小的例子。

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