如何在Autokey中按下指定按键时终止while循环
问题原因分析
你的代码存在三处核心逻辑错误,直接导致停止功能失效:
- 按键检测逻辑写在循环外,仅在脚本启动时执行了一次主动按s键的操作,完全没有实现后续用户主动按键的监听
keyboard.press_key()是按键发送方法,没有返回按键状态的功能,变量b的取值和你后续是否按下s键完全无关- 循环内2秒的休眠是连续阻塞的,即便加了正确的按键检测,也只有在休眠结束的瞬间才会触发判断,用户按下按键的响应延迟极高
修正后的可用代码(适配Autokey环境)
import time # 可自定义停止按键,功能键可写为'<ctrl>'、'<f5>'等符合Autokey命名规则的取值 stop_key = 's' while True: # 每次循环开头先检测停止键 if keyboard.is_pressed(stop_key): break # 执行预设的按键发送逻辑 keyboard.send_key("a", repeat=5) # 拆分2秒休眠为20次0.1秒的小休眠,实时检测停止键避免响应延迟 for _ in range(20): if keyboard.is_pressed(stop_key): break time.sleep(0.1) else: # 20次小休眠都未触发停止,继续下一轮大循环 continue # 休眠阶段检测到停止按键,跳出外层循环 break
注意事项
- Autokey脚本运行时会接管部分键盘事件,不要设置和系统/其他软件冲突的快捷键作为停止键
- 如果停止键响应不够灵敏,可以适当调小小休眠的间隔,比如把
0.1改成0.05,对应的range(20)改成range(40)即可保证总休眠时长仍为2秒
内容的提问来源于stack exchange,提问作者minionlou
相关产品推荐
相关产品推荐

