python - 使用 Tkinter 等待一定时间

标签 python python-2.7 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()

使用这些方法的优点是您的代码在等待时仍然能够响应事件。

关于python - 使用 Tkinter 等待一定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51764757/

相关文章:

python - 如果显示其他文本则终止 raw_input()

Python 评估错误

python - Python 是解释的,还是编译的,或者两者兼而有之?

python - 在 Python 中使用 __new__

python - 如何在同一个 Tkinter Toplevel() 窗口上显示两个图像

python - Tornado 和 Python 3.x

python - sql 代理传输不支持广播

python - 根据另一个变量类型初始化变量

python - 基于串行数据动态更新 Tkinter 窗口

python - _tkinter.TclError : no display name and no $DISPLAY environment variable