使用快捷键修改Python变量值:Esc热键无法终止while循环如何解决
问题根因
- 自定义函数命名为
exit会覆盖Python内置的同名方法,属于不规范命名 - 热键注册逻辑放在while循环内,会每次循环重复注册热键,产生冗余性能损耗
- 每次循环主动调用自定义
exit()函数,该函数固定返回False,因此第一次循环就会直接触发终止逻辑,和按键操作完全无关 - 原代码中绑定的lambda回调仅调用
exit()获取返回值,没有对running变量做任何修改,就算热键触发也无法终止循环
可正常运行的实现方案
假设你使用的是Python的keyboard库实现热键监听,实现代码如下:
import keyboard # 循环状态标识 running = True # Esc键触发回调 def on_esc_pressed(): global running running = False # 进入循环前仅注册一次热键 keyboard.add_hotkey("esc", on_esc_pressed) while running: # 此处编写你循环内的业务逻辑 # --- 业务逻辑开始 --- # --- 业务逻辑结束 --- # 加入短休眠降低空转CPU占用,可根据实际业务调整时长 keyboard.wait(0.01) # 循环结束后解绑所有热键,避免进程残留监听 keyboard.unhook_all()
依赖安装
运行代码前需要先安装对应的依赖库:pip install keyboard
内容的提问来源于stack exchange,提问作者AmirhosseinHG
相关产品推荐
相关产品推荐

