【问题标题】:Why isn't the program closing after the fade animation?为什么在淡入淡出动画后程序没有关闭?
【发布时间】:2020-08-16 05:43:18
【问题描述】:

我是 python 新手,我想出了如何通过控制我的 GUI 程序的 wm_attributes 使页面淡出的想法。我编写了这段代码,每次迭代将“a”的数量减少 0.1,然后程序进入睡眠 0.1 秒以创建这种淡入淡出效果。页面完全透明后,我告诉它销毁根。但是,淡入淡出动画效果很好,但窗口冻结并且在动画完成后不会关闭。我在这里做错了什么? 这是我的代码:

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 tkinter fade fadeout


【解决方案1】:

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

Python 使用二进制浮点运算。您可以找到更多信息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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 2022-10-13
    • 1970-01-01
    • 2014-01-20
    • 2012-12-18
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多