Ich experimentiere gerade etwas mit Tkinter, "grid" und "after", also verzeiht mir, wenn ich beim Import * und auch keine Klassen verwende. Das kommt alles nicht in den abschließenden Code. Im folgenden Code will ich einfach nur in einem Label ein paar Zahlen aufwärtszählend mir anzeigen lassen. Mit einer "after" Funktion soll ein gewisser delay eingebracht werden (die Variable zeit hat nicht wirklich was mit Zeit zu tun). Anfangen soll es durch einen Knopfdruck und für die Zeit der Zählung, soll der Knopf deaktiviert sein. Leider passiert hier ein Fehler den ich nicht nachvollziehen kann. Obwohl er deaktiviert zu sein scheint (ausgegraut, keine Klick-Animation), wird jedesmal wenn ich ihn erneut drücke, die Zählung immer schneller und schneller. Was passiert da und wie kann ich das abstellen?
Code: Alles auswählen
from tkinter import *
zeit = 0
def setup():
global zeit_label
zeit_fenster = Tk()
zeit_fenster.title("Zeit")
zeit_label = Label(zeit_fenster, text = "", width = 50)
start_button = Button(zeit_fenster, text="Start", width = 10)
zeit_label.grid(row=0, columnspan=5, padx=10, pady=10)
start_button.grid(row=5, columnspan=2, padx=10, pady=10)
start_button.bind("<Button-1>", begin)
def begin(event):
global start_button, zeit
if start_button["text"] == "Start":
start_button.config(state = "disabled")
fenster_update()
elif start_button["text"] == "Zurück":
zeit_fenster.destroy()
def fenster_update():
global zeit_fenster, start_button, zeit
zeit += 1
if zeit <= 50:
if zeit == 50:
start_button.config(text="Zurück", state="normal")
zeit_label.config(text=str(zeit))
if start_button["text"] == "Start":
spieltag_fenster.after(300, fenster_update)
if __name__ == '__main__':
setup()
mainloop()