Я работаю над Python 3.8 и пытаюсь включить или выключить поток с помощью сочетания клавиш.
Это мой класс Thread:
import keyboard
from threading import Thread
import time
class PrintHi(Thread):
def __init__(self):
Thread.__init__(self)
self.active = False
def run(self):
while True:
if self.active:
print("Hi,", time.time())
time.sleep(1)
Кажется, все работает по назначению. Я могу запустить поток, а затем изменить 'thread.active' на True или False, в зависимости от того, хочу ли я его включить или отключить.
Проблема в том, когда я пытаюсь используйте его с модулем "клавиатура", он не работает должным образом:
class KeyboardHook(object):
def __init__(self):
self.thread = PrintHi()
self.thread.start()
self.set_keyboard_hotkeys()
def toggle_print(self):
print("Toggle Print")
self.thread.active = not self.thread.active
def set_keyboard_hotkeys(self):
print("Setting hotkeys hooks")
keyboard.add_hotkey('ctrl+c', self.toggle_print)
keyboard.wait()
if __name__ == '__main__':
hook = KeyboardHook()
Вот шаги:
- Сначала я создаю поток, сохраняю его в 'self.thread 'и запустите его.
- Затем я установил хуки горячих клавиш клавиатуры
- Когда я нажимаю' ctrl + c ', должна выполняться функция' toggle_print () '
- Это должно установите для свойства active потока значение True, таким образом, разрешив печать.
Поток сам по себе работает нормально, и крючок клавиатуры сам по себе также работает нормально, но когда я объединяю оба, они не работают.
Кто-нибудь имеет представление, что я делаю не так? Есть ли способ включения и выключения потоков с помощью сочетаний клавиш? В моем приложении у меня будет несколько потоков, которые мне придется включать и выключать независимо.
Спасибо!