我如何创建热键来调用相互中断的函数?

时间:2019-01-07 10:54:56

标签: python python-3.x function hotkeys

如果在完成热键1的功能之前创建了一个由“ 1”激活的热键和由“ 2”激活的热键,则第二个热键将不会调用它的已分配功能。

我可以使用键盘模块创建在python中调用函数的热键。我在下面的代码中包含了一个示例,该示例适用于调用函数。

import keyboard
import time

def hk_print(word,word2):
    time.sleep(5)
    print(word,word)


keyboard.add_hotkey('1', hk_print, args= ('hotkey','test1'))
keyboard.add_hotkey('2', hk_print, args= ('hotkey','test2'))

keyboard.wait()

我可以在此代码中添加任何内容,以使热键激活的功能彼此中断吗?因此,如果我先按1再按2,它将停止通过第一个功能,立即开始执行第二个功能?

1 个答案:

答案 0 :(得分:0)

这是可行的,但需要一些努力。您正在进入异步领域。

我的建议是使用keyboard.record()并使用threading.Timer()代替time.sleep()。您将创建一个新的回调,该回调将在按下键后立即开始记录所有事件,并以某个超时(例如5秒钟)启动Timer()。

时间过去后,您必须停止记录,然后评估等待期间捕获的事件,将所有按下的1和2丢弃保存为最后一个,然后调用另一个回调-hk_print一组参数,具体取决于最终印刷机。