如何用Python keyboard模块检测按键?解决代码异常与命令行遗留问题
解决keyboard模块的两个按键检测问题
你的代码出现问题的原因和修复方案如下:
问题1:按‘s’需要两次才触发
原始代码里每个if分支都调用了keyboard.read_key(),这个函数每次调用都会等待一次按键输入。比如你按‘s’时,第一个read_key()拿到‘s’,不匹配'enter';接着第二个read_key()又会等待下一次按键,这时候你再按‘s’才会触发第三个if的逻辑,所以需要按两次。
修复方法:把按键读取操作提取到循环开头,只执行一次,用变量保存结果后再做判断。
问题2:程序结束后按键内容显示在命令提示符
keyboard.read_key()默认会将按键内容回显到终端,所以程序结束后之前的按键会显示出来。解决方法是给read_key()添加suppress=True参数,抑制按键的回显行为。
另外,原始代码里存在字符串引号未闭合的语法错误(比如print('Enter is pressed)少了结尾的单引号),也需要一并修正。
最终修复后的代码:
import keyboard while True: pressed_key = keyboard.read_key(suppress=True) if pressed_key == 'enter': print('Enter is pressed') elif pressed_key == 'q': print('Quitting the program') break elif pressed_key == 's': print('Skipping the things')
额外优化:把多个独立的if改成elif,这样只要匹配到一个条件就不会继续检查后续分支,逻辑更高效,也避免不必要的判断。
内容的提问来源于stack exchange,提问作者Saif Bashar
相关产品推荐
相关产品推荐

