我正在努力獲取一個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