为什么程序在淡入淡出动画后没有关闭?
Why isn't the program closing after the fade animation?
我是 python 的新手,我想到了如何通过控制我的 GUI 的 wm_attributes 让页面淡出程序。我制作了这段代码,每次迭代将 'a' 的数量减少 0.1,然后程序进入休眠状态 0.1 秒以创建此淡入淡出效果。页面完全透明后,我告诉它销毁 root。但是,淡入淡出动画效果很好,但 window 冻结并且在动画完成后不会关闭。我在这里做错了什么?
这是我的代码:
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 使用二进制 floating-point 算法。您可以找到更多信息 here.
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()
我是 python 的新手,我想到了如何通过控制我的 GUI 的 wm_attributes 让页面淡出程序。我制作了这段代码,每次迭代将 'a' 的数量减少 0.1,然后程序进入休眠状态 0.1 秒以创建此淡入淡出效果。页面完全透明后,我告诉它销毁 root。但是,淡入淡出动画效果很好,但 window 冻结并且在动画完成后不会关闭。我在这里做错了什么? 这是我的代码:
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 使用二进制 floating-point 算法。您可以找到更多信息 here.
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()