如何在Tkinter的事件循环旁边运行自己的代码?

如何在Tkinter的事件循环旁边运行自己的代码?

我弟弟刚开始编程,为了他的科学博览会项目,他正在模拟天空中的一群鸟。他的大部分代码都已经写好了,而且运行得很好,但是鸟儿需要移动每时每刻.

然而,Tkinter占用了它自己的事件循环的时间,所以他的代码无法运行。做root.mainloop()运行,并继续运行,它只运行事件处理程序。

是否有一种方法可以让他的代码与main循环一起运行(没有多线程,这是令人困惑的,这应该保持简单),如果是的话,是什么呢?

现在,他想出了一个丑陋的黑客,把他的move()功能<b1-motion>,因此,只要他按住按钮,摇动鼠标,它就能工作。但一定有更好的办法。


潇湘沐
浏览 1975回答 6
6回答

HUH函数

使用after方法的Tk目的:from&nbsp;tkinter&nbsp;import&nbsp;*root&nbsp;=&nbsp;Tk()def&nbsp;task(): &nbsp;&nbsp;&nbsp;&nbsp;print("hello") &nbsp;&nbsp;&nbsp;&nbsp;root.after(2000,&nbsp;task)&nbsp;&nbsp;#&nbsp;reschedule&nbsp;event&nbsp;in&nbsp;2&nbsp;secondsroot.after(2000,&nbsp;task)root.mainloop()下面是after方法:def&nbsp;after(self,&nbsp;ms,&nbsp;func=None,&nbsp;*args): &nbsp;&nbsp;&nbsp;&nbsp;"""Call&nbsp;function&nbsp;once&nbsp;after&nbsp;given&nbsp;time. &nbsp;&nbsp;&nbsp;&nbsp;MS&nbsp;specifies&nbsp;the&nbsp;time&nbsp;in&nbsp;milliseconds.&nbsp;FUNC&nbsp;gives&nbsp;the &nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;which&nbsp;shall&nbsp;be&nbsp;called.&nbsp;Additional&nbsp;parameters &nbsp;&nbsp;&nbsp;&nbsp;are&nbsp;given&nbsp;as&nbsp;parameters&nbsp;to&nbsp;the&nbsp;function&nbsp;call.&nbsp;&nbsp;Return &nbsp;&nbsp;&nbsp;&nbsp;identifier&nbsp;to&nbsp;cancel&nbsp;scheduling&nbsp;with&nbsp;after_cancel."""

绝地无双

在编写您自己的循环时,就像在模拟中一样(我假设),您需要调用update函数来执行mainloopDo:用更改更新窗口,但在循环中执行。def&nbsp;task(): &nbsp;&nbsp;&nbsp;#&nbsp;do&nbsp;something &nbsp;&nbsp;&nbsp;root.update()while&nbsp;1: &nbsp;&nbsp;&nbsp;task()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python