每当显示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
答案 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