Ich arbeite daran, ein Python/Tkinter-Label-Widget zu bekommen, um seinen Inhalt zu aktualisieren. In einem früheren Thread habe ich heute Anweisungen zum Zusammenstellen der Widgets ausgeführt. Zur Laufzeit verändert das Label-Widget jedoch NICHT den Inhalt, sondern behält einfach seinen ursprünglichen Inhalt bei. Soweit ich das beurteilen kann, wird decrement_widget() niemals aufgerufen. Irgendwelche Ideen?Aktualisierung des Python/Tkinter-Label-Widgets?
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()
Per Ihre Empfehlung, Ich habe die decrement_label Funktion ‚text = ...; verbleibend - = 1; sv = Tkinter.StringVar(); sv.Set (Text); label1.conf (text = sv, width = 100); label1.update_idletasks() '. Dies hat sich jedoch nicht auf das Laufzeitverhalten ausgewirkt. Die decrement_label-Funktion scheint überhaupt nicht aufgerufen zu werden! –
Ich habe auch herausgefunden, dass die 'restliche - = 1' Anweisung das Problem verursacht. Python schlägt automatisch fehl, wenn es auf diese Anweisung trifft. Ist etwas nicht in Ordnung? –
Sie müssen die 'StringVar' einstellen, wenn Sie die' Label' erstellen, und dann diese Instanz der 'StringVar' modifizieren. Sie sollten "label1.conf" nicht wiederholt aufrufen müssen. Veröffentlichen Sie Ihren vollständig aktualisierten Code. –