Dlaczego program nie zamyka się po animacji zanikania?
Jestem nowy w Pythonie i wpadłem na pomysł, jak sprawić, by strona zniknęła, kontrolując wm_attributes mojego programu GUI. Zrobiłem ten kod, który zmniejsza wartość „a” o 0,1 w każdej iteracji, a następnie program przechodzi w stan uśpienia na 0,1 sekundy, aby stworzyć efekt zanikania. Gdy strona stała się całkowicie przezroczysta, poleciłem jej zniszczyć root. Jednak animacja zanikania działa idealnie, ale okno zawiesza się i nie zamyka się po zakończeniu animacji. Co ja tu robię źle? Oto mój kod:
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()
Odpowiedzi
W twojej while
pętli a
zmienna nigdy nie osiągnie dokładnej 0
wartości, a zatem twoja pętla nigdy się nie skończy. Musisz albo sprawdzić, czy a
jest dodatnia, albo użyć wartości całkowitej do odejmowania.
Python używa binarnej arytmetyki zmiennoprzecinkowej. Więcej informacji znajdziesz tutaj .
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()