如何使用python tkinter的mainloop维护跳跃动作的监听器帧回调?
控制器的常量回调与Tkinter的主循环同时发生。
也:
1)这称为多线程吗?
2)在使用跳跃动作进行python开发时,你使用了什么gui?
谢谢!
答案 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。