我有一个函数调用一个类,在类被启动后它将继续向下运行,就像它应该的那样。但是我想在课程被启动之后暂停,直到从课堂内关闭asyncio。
这样的事情:
from PyHook3 import HookManager
import asyncio
class Keystroke_Watcher(object):
def __init__(self, event_loop):
self.event_loop = event_loop
self.hm = HookManager()
self.hm.KeyDown = self.on_keyboard_event
self.hm.HookKeyboard()
def on_keyboard_event(self, event):
if event.KeyID == 65: # A
self.shutdown()
return True
def shutdown(self):
self.hm.UnhookKeyboard()
self.event_loop.stop()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
watcher = Keystroke_Watcher(loop)
loop.run_forever()
print("Done!")
这个想法是“主”代码在按下“A”键之前不应该继续。但是,使用此当前代码,它将冻结所有键盘操作,即使按下A后它也不会停止。
我使用了错误的asyncio循环吗?
它不适用于课程吗?
这个问题的最佳解决方案是什么? (不一定要将asyncio纳入解决方案)
注意:我知道Qt确实有这样做,但我不想包含整个qt库。 QEventLoop()。exec()启动它,QEventLoop()。exit()结束它。