我正在使用Python3.8,我正在尝试使用键盘快捷键打开和关闭线程
这是我的线程类:
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()
以下是步骤:
线程本身可以很好地工作,键盘挂钩本身也可以很好地工作,但是当我将两者结合起来时,它们就不工作了
有人知道我做错了什么吗?有没有一种方法可以通过使用键盘快捷键来打开和关闭线程?在我的应用程序中,我将有多个线程,我必须独立地打开和关闭它们
谢谢
KeyboardHook中的一些更改使其运行:
我建议您稍微重构一下代码,即在打印机线程中使用
Event
而不是bool
变量来表示打印操作,并添加允许您在程序退出时停止打印机线程的逻辑:另外,我建议将阻塞代码从
KeyboadHook
初始值设定项移到单独的start
方法:按如下方式运行:
这个密码对我来说很有用
相关问题 更多 >
编程相关推荐