繁体   English   中英

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

[英]Python: Does after() in Tkinter have a multi-threading approach?

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

我曾经想为物理计算和仿真创建一个线程。 但是,当我最终注意到该功能时,我改用了它。

因此,我对Tkinter如何实现该功能感到好奇。 是多线程的吗?

它不是多线程的。

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM