繁体   English   中英

如何在 Python 中编写线程键盘事件侦听器?

[英]How to code a threaded keyboard event listener in Python?

我正在为我的 python 脚本创建一个“终止开关”。 本质上,当我的主脚本循环并执行它时,它在后台监听特定的按键,然后在按下该键时完全退出脚本。

我只是将定期密钥检查放入主脚本中,但是有很多睡眠和等待,并且坐在那里按住密钥直到下一次检查出现并不是很实用。

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

我正在使用 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

但更好的方法是使用threading.Event 检查这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM