应该如何使用python tkinter的mainloop维护跳跃动作的监听器帧回调?

时间:2014-04-16 06:30:29

标签: python tkinter leap-motion

如何使用python tkinter的mainloop维护跳跃动作的监听器帧回调?

控制器的常量回调与Tkinter的主循环同时发生。

也:

1)这称为多线程吗?

2)在使用跳跃动作进行python开发时,你使用了什么gui?

谢谢!

1 个答案:

答案 0 :(得分:1)

这里有一个Tkinter + Leap Motion示例:Leap_Touch_Emulation

我写了它,它是我写过的唯一的Tkinter程序,但它确实说明了创建和使用监听器的基础知识。

1)是的,Leap Motion监听器是多线程的 - 每个回调函数都在一个单独的线程上执行。

您也可以在Tkinter循环中的方便点获取Leap Motion跟踪数据 - 根本不使用监听器。看起来像after()函数是一个很好的地方:

from Tkinter import *
import Leap
root=Tk()
controller = Leap.Controller()

def task():
    frame = controller.frame()
    root.after(1/60,task)  # 60 fps

root.after(1/60,task)
root.mainloop() 

(改编自:How do you run your own code alongside Tkinter's event loop

这可以提高应用程序的响应速度,因为每个主循环迭代只处理一帧Leap Motion跟踪数据,而不是最多4个。

2)这是一个不同的问题,可能不是适合堆栈溢出的类型。对于非图形密集型样本,我使用Tkinter,因为它是内置的。对于使用Tkinter不易实现的绘图类型的东西,我一直在使用pyglet / OpenGL。