python - 用 Tkinter 等待一定的时间
问题描述
我有一个 Tkinter 程序,我想暂停 3 秒钟。
time.sleep
不起作用,并且该after
方法不完全符合我的要求。
这是一个示例代码:
from Tkinter import *
def waithere():
print "waiting..."
root = Tk()
print "1"
root.after(3000,waithere)
print "2"
root.mainloop()
输出:
1
2
*3 seconds*
waiting...
我想要的输出:
1
waiting...
*3 seconds*
2
谢谢。
解决方案
通常,让 GUI 等待某些东西是一个非常糟糕的主意。这并不意味着基于事件的程序是如何工作的。或者更准确地说,GUI 已经处于永久等待状态,您不想用自己的等待来阻止它。
话虽如此,tkinter 有办法等到某些事情发生。例如,您可以使用“等待”函数之一,例如wait_variable、wait_window或wait_visibility。
假设您想waithere
进行等待,您可以使用wait_variable进行等待,并after
在给定时间后设置变量。
这是基于您的原始代码的解决方案:
from Tkinter import *
def waithere():
var = IntVar()
root.after(3000, var.set, 1)
print("waiting...")
root.wait_variable(var)
root = Tk()
print "1"
waithere()
print "2"
root.mainloop()
使用这些方法的好处是您的代码在等待时仍然能够响应事件。
推荐阅读
- java - 如何在java中更新excel文件?
- angular - Angular: Error de cours con wiki api。如何修复 XMLHttpRequest 错误?
- python - 如何在原子事务期间从另一个进程读取修改后的表?
- python - 粘贴PNG PIL Python
- reactjs - React Native - 如何本地实现文本编辑器
- r - 如何获取列的最小值和最大值?
- vba - 如何使用路径中的未知文件夹名称更好地缩小我的 DIR 路径?
- java - 如何将参数传递给 Hibernate 中的自定义函数
- python - 如何为每个上传的文件创建 Tkinter 条目?
- javascript - 谷歌地图不适用于 Chrome 中的引导卡布局