我最近在 pyglet-users 组中问了这个问题,但得到了回应,所以我在这里尝试。
我想扩展 Pyglet 以便能够使用 lirc 支持的红外输入设备。我之前在 PyGame 中使用过 pyLirc(http://pylirc.mccabe.nu/),我想重写我的应用程序以使用 Pyglet。
要查看是否按下了按钮,您通常会轮询 pyLirc 以查看其队列中是否有任何按钮按下。
我的问题是,Pyglet 中集成 pyLirc 的正确方法是什么?
如果它与当前窗口键盘/鼠标事件一样工作,我更愿意,但我不确定从哪里开始。
我知道我可以创建一个新的 EventDispatcher,我可以在其中注册新类型的事件并在轮询后调度它们,如下所示:
class pyLircDispatcher(pyglet.event.EventDispatcher):
def poll(self):
codes = pylirc.nextcode()
if codes is not None:
for code in codes:
self.dispatch_event('on_irbutton', code)
def on_irbutton(self, code):
pass
但是,如果我使用 pyglet.app.run(),如何将它集成到应用程序的主循环中以继续调用 poll() 以及如何将此 eventdispatcher 附加到我的窗口,使其与鼠标和键盘调度程序一样工作?
我看到我可以设置一个调度程序以使用 pyglet.clock.schedule_interval 定期调用 poll(),但这是正确的方法吗?