首页 > 解决方案 > 停止脚本的热键 - Python

问题描述

我正在尝试创建一个热键来停止我的脚本,这是我到目前为止的代码。

import time
import keyboard

running = True

def stop(event):  
    global running
    running = False
    print("stop")

  
# press ctrl+esc to stop the script 
keyboard.add_hotkey("ctrl+esc", lambda: stop)
  
while running:
    time.sleep(2)
    print("Hello")
    time.sleep(2)

标签: pythonpython-3.x

解决方案


add_hotkey 期望回调作为第二个参数,因此您必须将 stop 函数传递给它,另一方面,当调用回调时,不会传递任何事件。

比使用布尔变量更好的解决方案是使用 threading.Event,因为这是线程安全的,因为回调是在辅助线程中调用的。

import threading
import time

import keyboard


event = threading.Event()

def stop():
    event.set()
    print("stop")

keyboard.add_hotkey("ctrl+esc", stop)

while not event.is_set():
    time.sleep(2)
    print("Hello")
    time.sleep(2)

推荐阅读