Perché il programma non si chiude dopo l'animazione di dissolvenza?
Sono nuovo in Python e mi è venuta questa idea su come far svanire la pagina controllando i wm_attributes del mio programma GUI. Ho creato questo codice che riduce la quantità di "a" di 0,1 a ogni iterazione, quindi il programma va in sospensione per 0,1 secondi per creare questo effetto di dissolvenza. Dopo che la pagina è stata completamente trasparente, le ho detto di distruggere root. Tuttavia, l'animazione della dissolvenza funziona perfettamente ma la finestra si blocca e non si chiude al termine dell'animazione. Cosa sto facendo di sbagliato qui? Ecco il mio codice:
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()
Risposte
Nel tuo while
ciclo, la a
variabile non raggiungerà mai il 0
valore esatto e quindi il tuo ciclo non finirà mai. È necessario verificare se a
è positivo o utilizzare un valore intero per la sottrazione.
Python usa l'aritmetica binaria in virgola mobile. Puoi trovare maggiori informazioni qui .
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()