首页 > 解决方案 > 确定键盘事件顺序的规则?(Python)

问题描述

我目前有这样的情况:

keyboard.on_press(Function1)
keyboard.on_press_key(';', Function2)
keyboard.on_press_key('/', Function3) 

通过试用,我发现 on_press_key() 事件总是首先发生(并且我的程序的逻辑取决于它)但我不知道为什么,或者它是否是硬件或操作系统特定的事情,可能不一致并且如果在其他系统上使用会中断(?)。

我试过搜索,但找不到任何东西。是否有可靠的方法来了解事件触发的顺序,或者强制它们以特定的顺序触发?

标签: pythonkeyboard-events

解决方案


看源码,控制流程如下:

当一个键事件被引发时,process被调用,它在调用 handlers 之前调用pre_process_event (它本身调用nonblocking_keys字典中的所有回调)

    def process(self):
        """
        Loops over the underlying queue of events and processes them in order.
        """
        assert self.queue is not None
        while True:
            event = self.queue.get()
            if self.pre_process_event(event):
                self.invoke_handlers(event)
            self.queue.task_done()

然而,这只是一个可能会随着新版本而发展的实现细节,您最好不要依赖它。你能为前任Function1打电话Function2Function3


推荐阅读