Как создать горячие клавиши, которые вызывают функции, которые прерывают друг друга? - PullRequest
0 голосов
/ 07 января 2019

Если вы создали горячую клавишу, активируемую «1», и горячую клавишу, активированную «2», до того, как функция горячей клавиши 1 была завершена, то вторая горячая клавиша не будет вызывать назначенную ей функцию.

Я могу создавать горячие клавиши, которые вызывают функции в 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 голосов
/ 07 января 2019

Это выполнимо, но это потребует некоторых усилий. Вы попадаете на асинхронную территорию.

То, что я хотел бы предложить, - это использование keyboard.record () и использование threading.Timer () вместо time.sleep (). Вы должны создать новый обратный вызов, который начнет запись всех событий, как только будет нажата клавиша, и запустите Timer () с некоторым таймаутом, скажем, 5 секунд.

По истечении времени вам нужно будет остановить запись, затем оценить события, которые были захвачены во время ожидания, отбросить все нажатые 1 и 2 кнопки, чтобы сохранить самый последний, а затем вызвать ДРУГОЙ обратный вызов - hk_print с правом набор аргументов, в зависимости от того, каким был финальный пресс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...