Python设置快捷键停止运行脚本的实现方法及现有代码问题排查
问题排查与修复方案
现有代码的问题
- 回调函数未执行:
keyboard.add_hotkey第二个参数需要是可执行的回调对象,原代码写的lambda: stop仅返回stop函数本身,没有触发函数调用,快捷键触发时没有任何逻辑执行。 - 参数匹配错误:
stop函数定义时要求传入event参数,但快捷键触发时没有对应传参,即使调用了函数也会抛出参数数量不匹配的异常。
修复方法
你可以直接将回调绑定为stop函数,不需要额外套lambda,也可以删掉不需要的event参数(如果没有用到事件对象的话),修正后的代码如下:
import time import keyboard running = True def stop(): global running running = False print("stop") # 按下ctrl+esc组合键停止脚本运行 keyboard.add_hotkey("ctrl+esc", stop) while running: time.sleep(2) print("Hello") time.sleep(2)
额外注意事项
keyboard库捕获全局快捷键需要对应系统权限,Windows下需要以管理员身份运行脚本,Linux下需要root权限,否则快捷键不会触发。- 如果需要保留
event参数,可以调整代码为keyboard.add_hotkey("ctrl+esc", lambda e: stop(e)),同时保留stop函数的event入参即可。
内容的提问来源于stack exchange,提问作者Stone Garden
相关产品推荐
相关产品推荐

