我正在尝试在Windows 7上运行的简单Tkinter GUI中使用文本标签。当我使用其关联的StringVars的set方法时,我无法更新文本标签。以下代码在Mac OS中可以正常工作,但在Windows 7中,标签完全空白。我做错了什么?
import Tkinter as Tk
import time
def done():
print 'called'
root.after_cancel(fun)
root.quit()
root.destroy()
def myloop():
global fun
tst.set(str(time.time()))
fun = root.after(100,myloop)
root = Tk.Tk()
root.wm_title('Title')
tst = Tk.StringVar()
lbl = Tk.Label(master=root,textvariable=tst)
lbl.pack(side=Tk.TOP)
txt = Tk.Text(master=root)
txt.insert(Tk.INSERT,'Test2')
txt.pack()
root.protocol("WM_DELETE_WINDOW",done)
fun = root.after(100,myloop)
root.mainloop()
答案 0 :(得分:0)
我已经尝试过你的程序,它可以完美地更新StringVar。我认为它可能不起作用的唯一原因是因为您没有设置StringVar
的主人,所以您应该用tst = Tk.StringVar(root)
替换该声明。
但是,您可以删除StringVar
,因为文本是标签配置的一个选项,您可以使用config
方法更改它:
def myloop():
global fun
lbl.config(text=time.time())
fun = root.after(100,myloop)
# ...
lbl = Tk.Label(master=root)
lbl.pack(side=Tk.TOP)