I'm working on getting a python/tkinter label widget to update its contents. Per an earlier thread today, I followed instructions on how to put together the widgets. At runtime, however, the label widget does NOT change contents, but simply retains its original content. As far as I can tell, decrement_widget() is never called at all. Any ideas?
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()
You'll want to set the label's textvariable
with a StringVar
; when the StringVar
changes (by you calling myStringVar.set("text here")
), then the label's text also gets updated. And yes, I agree, this is a strange way to do things.
See the Tkinter Book for a little more information on this:
You can associate a Tkinter variable with a label. When the contents of the variable changes, the label is automatically updated:
v = StringVar() Label(master, textvariable=v).pack() v.set("New Text!")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With