Warum schließt sich das Programm nach der Fade-Animation nicht?
Ich bin neu in Python und hatte diese Idee, wie ich die Seite ausblenden kann, indem ich die wm_attributes meines GUI-Programms steuere. Ich habe diesen Code erstellt, der die Menge von 'a' bei jeder Iteration um 0,1 verringert, dann geht das Programm für 0,1 Sekunden in den Ruhezustand, um diesen Fade-Effekt zu erzeugen. Nachdem die Seite vollständig transparent war, sagte ich ihr, sie solle root zerstören. Die Fade-Animation funktioniert jedoch einwandfrei, aber das Fenster friert ein und schließt sich nicht, nachdem die Animation abgeschlossen ist. Was mache ich hier falsch? Hier ist mein Code:
from tkinter import *
import time
root = Tk()
def animation():
a = 1
while a != 0:
a -= 0.1
root.wm_attributes("-alpha", a)
time.sleep(0.1)
root.destroy()
btn = Button(root, text='Fade out', command=animation)
btn.pack()
root.mainloop()
Antworten
In Ihrer while
Schleife wird die a
Variable niemals den genauen 0
Wert erreichen und Ihre Schleife wird daher niemals enden. Sie müssen entweder prüfen, ob a
positiv ist, oder einen ganzzahligen Wert zum Subtrahieren verwenden.
Python verwendet binäre Gleitkommaarithmetik. Weitere Informationen finden Sie hier .
from tkinter import *
import time
root = Tk()
def animation():
a = 1
while a > 0:
a -= 0.1
root.wm_attributes("-alpha", a)
time.sleep(0.1)
root.destroy()
btn = Button(root, text='Fade out', command=animation)
btn.pack()
root.mainloop()