如何通过键盘快捷键触发后台运行的Python宏脚本?
后台脚本全局快捷键实现方案(基于keyboard库)
原代码问题修正
你的代码存在几处关键错误,导致无法正常运行:
- 函数拼写错误:
keyboard.add_hotkey被误写为keyboard.add.hotkey(多了一个点) - 语法逻辑错误:
add_hotkey不支持直接用exec包裹代码块,正确用法是传入函数对象 - 缺少脚本驻留逻辑:没有让脚本保持运行状态,执行后会直接退出,无法监听快捷键
修正后的完整代码
from pyautogui import click, moveTo import time import keyboard def auto_buy_xp(): # 定位初始按钮 moveTo(1749, 753) click() time.sleep(0.4) # 点击购买载具 moveTo(955, 973) click() time.sleep(0.4) # 输入XP数值 moveTo(1308, 584) click() time.sleep(0.01) keyboard.write('1000000') time.sleep(0.3) # 确认消耗资源 moveTo(851, 988) click() time.sleep(0.3) # 最终确认 moveTo(859, 757) click() # 注册全局快捷键Shift+A,触发自动操作函数 keyboard.add_hotkey('shift+a', auto_buy_xp) # 保持脚本后台运行,持续监听快捷键 keyboard.wait()
关键说明
- 函数封装:把所有自动操作逻辑封装成独立函数,既符合
add_hotkey的参数要求,也提升了代码的可读性和可维护性。 - 全局快捷键监听:
keyboard.add_hotkey支持直接绑定快捷键组合和触发函数,无需额外复杂处理。 - 脚本驻留:
keyboard.wait()会让脚本一直处于运行状态,直到手动终止(比如按Ctrl+C),保证后台能持续捕获快捷键。 - 权限要求:运行脚本时必须以管理员身份启动,否则keyboard库无法在其他窗口捕获全局按键事件。
- 坐标兼容性:pyautogui使用的是绝对屏幕坐标,如果目标窗口位置变动,点击会失效,后续可以结合窗口定位库(如
pygetwindow)计算相对坐标,提升稳定性。
内容的提问来源于stack exchange,提问作者Michael Franek
相关产品推荐
相关产品推荐

