在pyevent中使用回调函数

时间:2009-10-07 00:37:43

标签: python

我想检测按下linux中网络摄像头顶部的“快照”按钮。该按钮在/ dev中有此条目:    /dev/input/by-id/usb-PixArt_Imaging_Inc._USB2.0_UVC_VGA-event-if00

我目前正在使用“rel”包装器,因为它更好地处理异常。在执行以下代码之前,会为self.s.cam_btn分配按钮的/ dev条目。

    rel.override()
    rel.init()
    rel.read(self.s.cam_btn, self.snap)
    rel.dispatch()

self.snap()是回调。它捕获来自mplayer的屏幕截图并将图像提供给OCR程序。在回调返回之前,一切都很有效。这是问题所在:

如果self.snap()没有返回任何内容,程序将停止并且不再为任何按钮事件提供服务。如果self.snap()返回1,程序将继续在无限循环中为同一个按钮事件提供服务,而不是等待新事件。 pyevent的文档有点稀疏,所以任何帮助都会感激不尽。

克林顿

1 个答案:

答案 0 :(得分:0)

从未使用pyevent,但会尝试在处理程序结束时重新安排事件:

def snap(self):
    # ... code ...
    rel.read(self.s.cam_btn, self.snap)
    return False