Почему программа не закрывается после затухания анимации?
Я новичок в python, и мне пришла в голову идея о том, как заставить страницу исчезать, управляя wm_attributes моей программы с графическим интерфейсом. Я сделал этот код, который уменьшает количество «а» на 0,1 на каждой итерации, после чего программа переходит в спящий режим на 0,1 секунды, чтобы создать этот эффект затухания. После того, как страница стала полностью прозрачной, я сказал ей уничтожить root. Однако анимация затухания работает отлично, но окно зависает и не закрывается после завершения анимации. Что я здесь делаю не так? Вот мой код:
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()
Ответы
В вашем while
цикле a
переменная никогда не достигнет точного 0
значения, и, следовательно, ваш цикл никогда не закончится. Вам нужно либо проверить, a
является ли оно положительным, либо использовать целочисленное значение для вычитания.
Python использует двоичную арифметику с плавающей запятой. Вы можете найти больше информации здесь .
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()