You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:10:33