Tkinter中的文本标签未更新 - Windows 7

时间:2014-01-17 18:38:20

标签: python tkinter

我正在尝试在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()

1 个答案:

答案 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)