ich hab das kleine Programm unten geschrieben. Und es funktioniert auch.
Code: Alles auswählen
import tkinter
import random
def start_wuerfeln():
global running
running = True
wuerfeln()
def wuerfeln():
global running
if (running == True):
zufallszahl_wuerfel_1 = random.randint(1, 6)
label_wuerfel_1["text"] = " " + str(zufallszahl_wuerfel_1) + " "
hauptfenster.after(500, wuerfeln)
def stop_wuerfeln():
global running
running = False
running = False
hauptfenster = tkinter.Tk()
label_wuerfel_1 = tkinter.Label(hauptfenster, text=" 0 ", bg="yellow", font="Arial 44", borderwidth=5, relief="groove")
label_wuerfel_1.pack()
tkinter.Button(hauptfenster, text="Start", command=start_wuerfeln).pack()
tkinter.Button(hauptfenster, text="Stop", command=stop_wuerfeln).pack()
hauptfenster.mainloop()
Nun wollte ich das Programm mit einer main()-Funktion versehen, s.u. Es läuft auch, aber irgendwie nicht richtig. Denn beim Stop-Drücken würfelt er trotzdem weiter. Weiss jemand, was der Fehler ist? (Ich weiss, globale Variablen usw sind böse. Alles nur zu Übungszwecken.).
Code: Alles auswählen
import tkinter
import random
from functools import partial
def start_wuerfeln(hauptfenster, label_wuerfel_1):
running = True
wuerfeln(running, hauptfenster, label_wuerfel_1)
def wuerfeln(running, hauptfenster, label_wuerfel_1):
print(running)
if (running == True):
zufallszahl_wuerfel_1 = random.randint(1, 6)
label_wuerfel_1["text"] = " " + str(zufallszahl_wuerfel_1) + " "
hauptfenster.after(500, wuerfeln, running, hauptfenster, label_wuerfel_1)
def stop_wuerfeln(hauptfenster, label_wuerfel_1):
running = False
wuerfeln(running, hauptfenster, label_wuerfel_1)
def main():
hauptfenster = tkinter.Tk()
label_wuerfel_1 = tkinter.Label(hauptfenster, text=" 0 ", bg="yellow", font="Arial 44", borderwidth=5, relief="groove")
label_wuerfel_1.pack()
tkinter.Button(hauptfenster, text="Start", command=partial(start_wuerfeln, hauptfenster, label_wuerfel_1)).pack()
tkinter.Button(hauptfenster, text="Stop", command=partial(stop_wuerfeln, hauptfenster, label_wuerfel_1)).pack()
hauptfenster.mainloop()
if __name__ == '__main__':
main()