由于 tkinter 不是线程安全的,我经常看到人们使用该after方法对一些代码进行排队,以便在主线程中执行。这是一个例子:
import tkinter as tk
from threading import Thread
def change_title():
root.after(0, root.title, 'foo')
root = tk.Tk()
Thread(name='worker', target=change_title).start()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
因此,我们不是root.title('foo')直接在worker线程中执行,而是将其排队root.after并让主线程执行它。但打电话不就root.after和打电话一样糟糕吗root.title?root.after线程安全吗?