1 回答
TA贡献2003条经验 获得超2个赞
下面是 tkinter 的基本代码,它使对话框在 5 秒后弹出。
from tkinter import *
from tkinter import simpledialog
root = Tk()
root.withdraw()
def ask():
simpledialog.askstring(title="Code Required",
prompt="What's the Code?:")
root.after(5000, root.destroy) #added in the root.after() to try and terminate it after set time
root.after(3000,ask) #triggers ask() after 3000 ms(3 seconds)
#root.after(10000, root.destroy) # tried to wait 10 seconds before it breaks but this doesn't show the dialog box any more
root.mainloop()
这里after()
在给定时间后触发一个函数,即 3000 毫秒(3 秒),因此您也可以调整计时器。这只是一个示例,您可以根据需要进行更多编辑。
为什么使用after()
而不是while
和计时器?
这是因为while
循环干扰了 tkintermainloop()
导致窗口无响应,所以不建议使用while
or time.sleep()
。after()
相反,您也可以使用tkinter 的内置方法threading
。
这里有更多内容after()
:
它主要需要两个位置参数,
ms
并且func
ms
- 这是指定函数被触发的时间(以毫秒为单位)。func
- 指定完成后触发的函数ms
。
警告: 请记住,根窗口不会被破坏,它只是被隐藏,因此只要根窗口没有被破坏,程序就会继续在后台运行,因此您必须恢复该窗口并将其关闭任务结束。出于这个原因,我root.destroy()
在那里添加了。
添加回答
举报