我有一个 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()
使用这些方法的优点是您的代码在等待时仍然能够响应事件。
关于python - 使用 Tkinter 等待一定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51764757/