应该如何使用python-tkinter的主循环来维护leap-motion的侦听器帧回调?
控制器的常量回调与Tkinter的主循环同时发生。
还有:
1) 这叫做多线程吗?
2) 在python中使用跳跃运动进行开发时,您使用的gui是什么?
谢谢!
这里有一个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()
(改编自:如何在Tkinter的事件循环中运行自己的代码)
这可以提高应用程序的响应能力,因为每次主循环迭代只处理一帧Leap Motion跟踪数据,而不是最多处理4帧。
2) 这是一个不同的问题,可能不是适合堆栈溢出的类型。对于非图形密集型示例,我使用Tkinter,因为它是内置的。对于使用Tkinter无法轻松实现的绘图类型,我一直在使用pyglet/OpenGL。