Por que o programa não está fechando após a animação desaparecer?
Sou novo em python e tive a ideia de como fazer a página desaparecer controlando os wm_attributes do meu programa GUI. Eu fiz este código que diminui a quantidade de 'a' em 0,1 a cada iteração, então o programa vai dormir por 0,1 segundo para criar este efeito de fade. Depois que a página ficou completamente transparente, eu disse para destruir o root. No entanto, a animação de fade funciona perfeitamente, mas a janela congela e não fecha depois que a animação é concluída. O que eu estou fazendo errado aqui? Aqui está o meu código:
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()
Respostas
Em seu while
loop, a a
variável nunca atingirá o 0
valor exato e, portanto, seu loop nunca terminará. Você precisa verificar se a
é positivo ou usar um valor inteiro para subtrair.
Python usa aritmética de ponto flutuante binário. Você pode encontrar mais informações aqui .
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()