Python / tkinter Label Widget aktualisieren?

Ich arbeite daran, ein Python / Tkinter Label Widget zu bekommen, um seinen Inhalt zu aktualisieren. Per ein früherer Thread heute, folgte ich Anweisungen auf, wie man die Widgets zusammenstellte. Zur Laufzeit jedoch verlangt das Label-Widget den Inhalt nicht, sondern behält einfach seinen ursprünglichen Inhalt. Soweit ich sagen kann, ist decment_widget () überhaupt nicht angerufen. Irgendwelche Ideen?

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() 

  • Wie installiere ich die Konsole, dass meine tkinter (.py) Datei läuft in die GUI meines Programms
  • Ttk.Treeview - Änderungsreihenfolge kann nicht geändert werden
  • Wie kann ich den Button Text ändern, von Text zu einem leeren Namen mit einer Verzögerung?
  • Python Tkinter GUI Frame: Wie komme ich eine Klassenmethode aus einer Funktion einer anderen Klasse an?
  • Tkinter und Erkennung von USB-Geräten
  • Bindung oder Befehl, um zurückzukehren und Knopf zu arbeiten
  • Wie kann ich ein Python 3.5 Programm ausführen, das Tkinter auf einem Computer verwendet, ohne dass Python installiert ist?
  • Tkinter erkennt keine Bilddaten im base64-codierten String
  • 3 Solutions collect form web for “Python / tkinter Label Widget aktualisieren?”

    Sie wollen die textvariable des Labels mit einem StringVar . Wenn sich der StringVar ändert (indem man myStringVar.set("text here") ), wird der Text des Labels auch aktualisiert. Und ja, ich bin einverstanden, das ist eine seltsame Art, Dinge zu tun.

    Siehe das Tkinter Buch für ein wenig mehr Informationen dazu:

    Sie können eine Tkinter-Variable mit einem Label verknüpfen. Wenn sich der Inhalt der Variablen ändert, wird das Label automatisch aktualisiert:

     v = StringVar() Label(master, textvariable=v).pack() v.set("New Text!") 

    Ich denke, du bekommst einen "referenzierten vor Zuordnung" Fehler, weil Python denkt, dass es im lokalen Bereich remaining .

    In Python 3 kannst du nonlocal remaining . Aber in Python 2 glaube ich nicht, dass es einen Weg gibt, sich auf einen nicht-lokalen, nicht-globalen Bereich zu beziehen. Das hat für mich gearbeitet

     remaining = 0 def snooze (secs): """ Snoozes for the given number of seconds. During the snooze, a progress dialog is launched notifying the """ global remaining root = Tkinter.Tk() prompt = 'hello' label1 = Tkinter.Label(root, text=prompt, width=len(prompt)) label1.pack() remaining = secs def decrement_label (): global remaining 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() 
      import tkinter from tkinter import * # just init some vars remaining = 0 secs = 0 root = tkinter.Tk() prompt = StringVar() def snooze (secs): """ Snoozes for the given number of seconds. During the snooze, a progress dialog is launched notifying the """ def decrement_label (): global remaining, prompt remaining -= 1 prompt.set('Snoozing %d sec(s)' % remaining) label1.update_idletasks() if not remaining: print("end ... ") root.destroy() global remaining prompt.set("hello") label1 = tkinter.Label(root, textvariable=prompt, width=30) label1.pack() remaining = secs for i in range(1, secs + 1): root.after(i * 1000, decrement_label ) snooze(10) root.mainloop() 
    Python ist die beste Programmiersprache der Welt.