我正在努力获取一个python/tkinter标签小部件来更新其内容。根据今天早些时候的主题,我遵循了关于如何组装小部件的说明。但是,在运行时,标签小部件不会更改内容,只是保留其原始内容。据我所知,decrement_widget()根本不会被调用。有任何想法吗?制作python/tkinter标签小部件更新?
def snooze (secs):
"""
Snoozes for the given number of seconds. During the snooze, a progress
dialog is launched notifying the
"""
root = Tkinter.Tk()
prompt = 'hello'
label1 = Tkinter.Label(root, text=prompt, width=len(prompt))
label1.pack()
remaining = secs
def decrement_label():
text = "Snoozing %d sec(s)" % remaining
remaining -= 1
label1.config(text=text, width=100)
label1.update_idletasks()
for i in range(1, secs + 1):
root.after(i * 1000, decrement_label)
root.after((i+1) * 1000, lambda : root.destroy())
root.mainloop()
每你的建议,我改变了decrement_label功能为“text = ...;剩余 - = 1; sv = Tkinter.StringVar(); SV设定(文本); label1.conf(text = sv,width = 100); label1.update_idletasks()”。但是,这对运行时行为没有任何影响。 decrement_label函数根本不会被调用! – 2009-12-16 21:59:26
我还发现“剩余 - = 1”的陈述似乎是造成这个问题的原因。当Python遇到这个语句时,会以某种方式默默地失败。它有什么问题吗? – 2009-12-16 22:23:07
当你创建'Label'时,你必须设置'StringVar',然后修改'StringVar'的同一个实例。你不需要重复调用'label1.conf'。发布完全更新的代码。 – 2009-12-16 22:35:06