如何用Python编写线程化键盘事件侦听器



我想为我的python脚本制作一个"kill switch"。从本质上讲,当我的主脚本循环并完成它的任务时,它在后台监听特定的按键,然后在按键时完全退出脚本。

我只会在主脚本中进行定期的密钥检查,但是有很多睡眠和等待,坐在那里按住密钥直到下一次检查出现是不太实际的。

我知道如何为键盘键编写事件侦听器的代码,只是以前从未使用过线程。

我使用pynput只是为了防止可能导致与线程库不兼容。

非常感谢您的帮助。

keyboard模块在单独的线程中捕获事件,因此它可能是您想要的。

试试这样的东西:

import keyboard
import time
stop_switch = False

def switch(keyboard_event_info):
global stop_switch
stop_switch = True
keyboard.unhook_all()
print(keyboard_event_info)

def main_function():
global stop_switch
keyboard.on_press_key('enter', switch)
while stop_switch is False:
if stop_switch is False:
print("1")
if stop_switch is False:
time.sleep(0.2)
if stop_switch is False:
print("2")
if stop_switch is False:
time.sleep(0.5)
if stop_switch is False:
print("3")
if stop_switch is False:
time.sleep(1)
stop_switch = False

main_function()

几乎立即从time.sleep((退出的简单方法,例如10秒睡眠:

def main_function():
global stop_switch
keyboard.on_press_key('enter', switch)
while stop_switch is False:
if stop_switch is False:
print("sleeping for 10 seconds")
for i in range(100):
if stop_switch is False:
time.sleep(0.1)
print("program stopped")
stop_switch = False

但更好的方法是使用CCD_ 2。检查一下。

最新更新