实际上有一种类似的方法,tkinter.Tk().after()。它能实现在若干秒后执行一个函数的效果,并且Tk()不会因线程阻塞而崩溃。
但是我想要的效果是在tkinter.Tk()等待(且不会崩溃)后再执行后面的程序。
比如下面这一段代码
import tkinter
def print_():
print('b')
root = tkinter.Tk()
root.after(1000,print_)
print('a')
很容易就能猜到,运行结果是这样的:
a
b
其中b比a晚1s输出。
这意味着after()没有阻塞后面程序的运行。而我想要的效果恰好与之相反,就像这样:
b
a
其中过1s后,b和a几乎同一时间输出。并且因为print('a')被阻塞,b比a先被输出。
难道我只能绞尽脑汁地使用threading模块开多线程解决这个问题?
或者我只能傻乎乎地这样做?↓
import tkinter,time
root = tkinter.Tk()
for i in range(1000):
time.sleep(0.001)
root.update()
print('b')
print('a')
存在什么更好的办法吗?