python – 如何在Tkinter中创建淡出效果?我的代码崩溃了
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何在Tkinter中创建淡出效果?我的代码崩溃了,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1692字,纯文字阅读大概需要3分钟。
内容图文
![python – 如何在Tkinter中创建淡出效果?我的代码崩溃了](/upload/InfoBanner/zyjiaocheng/699/fc53b76f64204c6bbf0df959f594825b.jpg)
我正在通过overrideredirect在Tkinter中构建一个带有自定义窗口的应用程序.我将自行设计的X按钮绑定到下面的功能.使用我的按钮关闭应用程序工作正常,它确实淡出,但几秒钟后窗口重新出现,卡在一个循环(这就是它的样子)和崩溃.它应该退出,这是我添加fadeout循环之前所做的.有人能告诉我为什么程序重新出现然后在关闭应用程序时崩溃或提供更好的替代fadeout效果(我知道有更复杂的工具包但我需要在这种情况下使用Tkinter)?
谢谢
def CloseApp(event):
if InProgress==False: #InProgress boolean defined elsewhere in program
if tkMessageBox.askokcancel("Quit","Do you really wish to quit?"):
n=1
while n != 0:
n -= 0.1
QuizWindow.attributes("-alpha", n)
time.sleep(0.02)
Window.destroy() #I've also tried using the quit() method, not that it would make a difference
else:
if tkMessageBox.askokcancel("Quit"," If you quit now you will lose your progress and have to start again. Are you sure you want to quit?"):
n=1
while n != 0:
n -= 0.1
QuizWindow.attributes("-alpha", n)
time.sleep(0.02)
Window.destroy()
解决方法:
你有两个问题.首先,您不应该对浮点数进行精确比较.浮点数学是不精确的,n可能永远不会是0.0000000 ….
其次,你不应该在GUI程序中调用time.sleep.如果您想每隔0.02秒运行一次,请使用after.
这是一个例子:
import Tkinter as tk
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
b = tk.Button(self, text="Click to fade away", command=self.quit)
b.pack()
self.parent = parent
def quit(self):
self.fade_away()
def fade_away(self):
alpha = self.parent.attributes("-alpha")
if alpha > 0:
alpha -= .1
self.parent.attributes("-alpha", alpha)
self.after(100, self.fade_away)
else:
self.parent.destroy()
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
内容总结
以上是互联网集市为您收集整理的python – 如何在Tkinter中创建淡出效果?我的代码崩溃了全部内容,希望文章能够帮你解决python – 如何在Tkinter中创建淡出效果?我的代码崩溃了所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。