小编Par*_*gar的帖子

一定时间后退出tkinter窗口?

我已经尝试过各种方法来关闭可以在互联网上找到的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!
Run Code Online (Sandbox Code Playgroud)

我尝试使用“之后”方法。首先,我创建了执行销毁命令的过程“ window_closer()”之后,尝试了“ root.after(30000,destroy())”,然后以防万一,我尝试了“ root.after(30000,window_closer)”。我以为那没有任何区别。真可惜,因为我成功了,那真是太理想了。

我还尝试创建一个框架,然后“销毁”该框架,但是尽管它可能会禁用小部件,但实际上并没有关闭窗口(例如,将其划掉)。当我尝试'root.quit()'时,什么也没发生。使用“ root.destroy()”,我收到错误消息“ tkinter.TclError:无法调用“ destroy”命令:应用程序已被破坏”。显然,这与mainloop()有关,但是尽管谷歌搜索了它,并查看了其他人的答案,但我并没有真正得到它。

我想念什么吗?任何帮助将非常感激!

python tkinter

4
推荐指数
1
解决办法
2518
查看次数

检查 tkinter 中是否存在 Toplevel() 对象?

RE:验证 Toplevel() 的存在

我为用户设置了 15 秒的时间限制,因为他们选择要随机元音还是随机辅音 9 次,以形成随机字母列表。(我正在使用包含从其他人的答案中获得的 GUI 计时器的 Toplevel)。

如果他们按时管理,一个类似的计时器会出现在 ORIGINAL 窗口上,替换元音/辅音按钮(此时我已经销毁了),并且旧的 SEPARATE-window Toplevel 计时器被销毁。但是,我想进行第二次倒计时,因为它必须从 30 秒开始,在正确的时间开始,而不是在用户仍在选择字母期间在后台(在 VOWEL/CONSONANT 按钮后面)滴答作响。

如果这些都没有任何意义,那么这是不起作用的代码的基本轮廓。

# I tried to test if the the Toplevel timer had been destroyed (which happens as soon as the 
# user has finished with the 9 letters). If so, I could then start the NEW 30-second timer.

import tkinter as tk

root = tk.Tk()

test = tk.Label() 


# above: later, will test if a Label() widget counts as …
Run Code Online (Sandbox Code Playgroud)

python tkinter

3
推荐指数
1
解决办法
3253
查看次数

标签 统计

python ×2

tkinter ×2