Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么程序在淡入淡出动画后不关闭?_Python_Tkinter_Fade_Fadeout - Fatal编程技术网

Python 为什么程序在淡入淡出动画后不关闭?

Python 为什么程序在淡入淡出动画后不关闭?,python,tkinter,fade,fadeout,Python,Tkinter,Fade,Fadeout,我是python新手,我提出了如何通过控制GUI程序的wm_属性使页面淡出的想法。我编写了这段代码,每次迭代将“a”的数量减少0.1,然后程序进入睡眠状态0.1秒,以创建这种淡入淡出效果。在页面完全透明后,我告诉它销毁root。但是,淡入淡出动画效果非常好,但窗口会冻结,并且在动画完成后不会关闭。我做错了什么? 这是我的密码: from tkinter import * import time root = Tk() def animation(): a = 1 whil

我是python新手,我提出了如何通过控制GUI程序的wm_属性使页面淡出的想法。我编写了这段代码,每次迭代将“a”的数量减少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使用二进制浮点算法。你可以找到更多信息

在while循环中,a变量永远不会达到精确的0值,因此循环永远不会结束。您需要检查a是否为正值,或者使用整数值进行减法

Python使用二进制浮点算法。你可以找到更多信息


也许这可以帮助你回答这个问题。root.destroy vs.root.quit。也许这可以帮助你回答这个问题。root.destroy vs.root.quit。
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()