【问题标题】:How Do i create hotkeys which call functions that interrupt eachother?我如何创建调用相互中断的函数的热键?
【发布时间】:2019-06-02 00:50:52
【问题描述】:

如果您在热键 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 它将停止执行第一个函数并立即开始执行第二个函数?

【问题讨论】:

    标签: python python-3.x function hotkeys


    【解决方案1】:

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

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

    时间过去后,您必须停止记录,然后评估在等待期间捕获的事件,删除所有按下的 1 和 2 保存到最后一个,然后调用另一个回调 - hk_print 右边一组 args,取决于最后的印刷机是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2012-11-15
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2020-06-20
      相关资源
      最近更新 更多