繁体   English   中英

一定时间后自动关闭窗口

[英]Automatically close window after a certain time

在一个类中,在一个函数中,我正在创建一个Tkinter画布。 此函数正在由另一个类调用,我希望Tkinter窗口弹出30秒然后关闭自身。 我有电话

master.mainloop()
time.sleep(30)
master.destroy() 

但我得到一个错误

“ elf.tk.call('destroy',self._w)_tkinter.TclError:无法调用“ destroy”命令:应用程序已被破坏”

那我怎么能自己关闭呢?

不要在time.sleep()使用time.sleep() 相反,调用函数after你要关闭的窗口小部件。

这是最简单的示例:

import tkinter as tk

w = tk.Tk()
w.after(30000, lambda: w.destroy()) # Destroy the widget after 30 seconds
w.mainloop()

这里的问题是,除非GUI关闭, mainloop()不会返回。

因此,在GUI关闭并销毁自身30秒 ,您尝试销毁它。 显然这失败了。

但是您不能只在主循环内移动sleepdestroy调用,因为如果您sleep在main循环的中间,GUI将冻结。

因此,您需要某种不会停止主循环的计时器。 为此, tkinter包括了after方法。 该答案给出了使用它的详细示例。

我正在设置一个新的服务器,以在tkinter窗口上发送按钮命令并打印消息。当ı按下按钮时,将在tkinter窗口上打印消息“ A”,而在ı释放按钮时,消息“ B”将显示在tkinter窗口中。直到再次按下该按钮为止。我希望消息在tkinter窗口上连续更改,但是ı只要按下按钮,我都不知道如何将tkinter窗口保持在屏幕上。您能帮我吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM