与 Tkinter 的事件循环同时运行自定义代码
在使用 Tkinter 时,很明显它的事件循环消耗了过多的处理时间,阻碍自定义代码的执行。具体来说,在一个实例中,模拟鸟群需要不断移动,但这种移动受到事件循环对系统的控制的阻碍。
要解决此问题并允许自定义代码与主循环同时运行没有多线程的复杂性,可以使用 Tk 对象的 after 方法。
from tkinter import * root = Tk() def move(): # Custom code to update bird positions root.after(2000, move) # Schedule the move() function to run again in 2 seconds root.mainloop() # Start the Tkinter event loop
after 方法安排在指定的时间间隔后执行函数。在这里,我们使用它来安排 move() 函数每 2 秒运行一次,让我们的自定义代码有机会在事件循环迭代之间执行。
after 方法的声明如下:
def after(self, ms, func=None, *args): """Call function once after given time. MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel."""
以上是如何在没有多线程的情况下与 Tkinter 的主循环同时运行自定义代码?的详细内容。更多信息请关注PHP中文网其他相关文章!