为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2019-06-14 10:34:14
如何在Tkinter的事件循环旁边运行自己的代码?我弟弟刚开始编程,为了他的科学博览会项目,他正在模拟天空中的一群鸟。他的大部分代码都已经写好了,而且运行得很好,但是鸟儿需要移动每时每刻.然而,Tkinter占用了它自己的事件循环的时间,所以他的代码无法运行。做root.mainloop()运行,并继续运行,它只运行事件处理程序。是否有一种方法可以让他的代码与main循环一起运行(没有多线程,这是令人困惑的,这应该保持简单),如果是的话,是什么呢?现在,他想出了一个丑陋的黑客,把他的move()功能<b1-motion>,因此,只要他按住按钮,摇动鼠标,它就能工作。但一定有更好的办法。
查看完整描述

6 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

使用after方法的Tk目的:

from tkinter import *root = Tk()def task():
    print("hello")
    root.after(2000, task)  # reschedule event in 2 secondsroot.after(2000, task)root.mainloop()

下面是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."""


查看完整回答
反对 回复 2019-06-14
?
绝地无双

TA贡献1946条经验 获得超4个赞

在编写您自己的循环时,就像在模拟中一样(我假设),您需要调用update函数来执行mainloopDo:用更改更新窗口,但在循环中执行。

def task():
   # do something
   root.update()while 1:
   task()


查看完整回答
反对 回复 2019-06-14
  • 6 回答
  • 0 关注
  • 1916 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信