¿Por qué el programa no se cierra después de la animación de desvanecimiento?
Soy nuevo en python y se me ocurrió esta idea sobre cómo hacer que la página se desvanezca controlando los atributos wm_attributes de mi programa GUI. Hice este código que disminuye la cantidad de 'a' en 0,1 en cada iteración, luego el programa se duerme durante 0,1 segundos para crear este efecto de desvanecimiento. Después de que la página fuera completamente transparente, le dije que destruyera la raíz. Sin embargo, la animación de desvanecimiento funciona perfectamente, pero la ventana se congela y no se cierra después de que finaliza la animación. ¿Qué estoy haciendo mal aquí? Aquí está mi 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()
Respuestas
En su while
ciclo, la a
variable nunca alcanzará el 0
valor exacto y, por lo tanto, su ciclo nunca terminará. Debe verificar si a
es positivo o usar un valor entero para restar.
Python usa aritmética binaria de coma flotante. Puede encontrar más información aquí .
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()