【发布时间】:2017-07-14 01:52:57
【问题描述】:
我已经尝试了各种方法来关闭我在互联网上可以找到的 tkinter 窗口。我问这个问题的唯一原因,即使它已经被问过很多次了,我仍然无法让它发挥作用。
基本上,我正在制作一个简单的“倒计时”游戏(如电视节目),其中包含一个 30 秒的大型 tkinter“计时器”。该数字正确地向下滴答,但除非用户手动关闭窗口,否则程序将不会继续。显然,这首先破坏了计时器的目的,但是我怎样才能让它在我想要的时候自动关闭呢?
这是一个非常简单但不起作用的示例:
# python 3.5.2
from tkinter import *
root = Tk()
root.title("Test")
root.mainloop()
# root.destroy() / root.quit() <== neither of these are effective
print("The window has now been closed") ## not unless the user crosses it off!
我尝试使用 'after' 方法。首先我尝试了“root.after(30000, destroy())”,然后,为了以防万一,我在创建了一个执行销毁命令的过程“window_closer()”之后尝试了“root.after(30000,window_closer)”。我假设这根本没有区别。真可惜,因为我成功了,这本来是理想的。
我还尝试创建一个框架,然后“销毁”该框架,但尽管它可能会禁用小部件,但它实际上并没有关闭窗口(如,将其划掉)。当我尝试“root.quit()”时,什么也没发生。使用“root.destroy()”时,我收到错误消息“tkinter.TclError:无法调用“destroy”命令:应用程序已被销毁”。显然这与 mainloop() 有关,但我并没有真正理解它,尽管我用谷歌搜索过它,并查看了其他人的答案。
我错过了什么吗?任何帮助将不胜感激!
【问题讨论】: