Python:Tkinter中的after()是否有多线程方法?

2024-04-25 09:36:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个物理模拟程序,发现after()很有用。在

我曾经想为物理计算和模拟创建一个线程。但当我最终注意到这个函数时,我就用了它。在

所以,我很好奇Tkinter是如何实现这个功能的。是多线程吗?在


Tags: 函数功能tkinter物理线程模拟程序after
2条回答

它不是多线程的。在

Tkinter的工作原理是将对象从队列中拉出并进行处理。通常这个队列中的事件是由用户生成的(鼠标移动、按钮单击等)。在

此队列可以包含其他内容,例如使用after创建的作业。因此,对Tkinter来说,用after提交的内容只是在特定时间点要处理的另一个事件。在

以下脚本将冻结GUI 5秒,因此它不是多线程的:

from Tkinter import Tk, Label
from time import sleep
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
w.after(100, lambda: sleep(5))
root.mainloop()

相关问题 更多 >