Pourquoi le programme ne se ferme-t-il pas après l'animation de fondu ?
Je suis nouveau sur python et j'ai eu cette idée sur la façon de faire disparaître la page en contrôlant les wm_attributes de mon programme GUI. J'ai créé ce code qui diminue la quantité de 'a' de 0,1 à chaque itération, puis le programme se met en veille pendant 0,1 seconde pour créer cet effet de fondu. Une fois la page complètement transparente, je lui ai dit de détruire root. Cependant, l'animation de fondu fonctionne parfaitement mais la fenêtre se fige et ne se ferme pas une fois l'animation terminée. Qu'est-ce que je fais de mal ici ? Voici mon 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()
Réponses
Dans votre while
boucle, la a
variable n'atteindra jamais la 0
valeur exacte et donc votre boucle ne se terminera jamais. Vous devez soit vérifier si a
est positif, soit utiliser une valeur entière pour la soustraction.
Python utilise l'arithmétique binaire à virgule flottante. Vous pouvez trouver plus d'informations ici .
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()