Python keyboard模块多次调用read_key导致需按两次键触发输出的问题
问题原因
你的代码里每个if语句都调用了keyboard.read_key(),这个函数会阻塞程序直到读取到新的按键输入。比如你按一次"up":
- 第一个
read_key()读到"up",执行print("up") - 接着第二个
read_key()会等待你再次按键,才会继续判断是否是"down" - 第三个
read_key()同理,又会等待新的按键
这就导致你每次按一个键,只有第一个匹配的判断会执行,但后续的判断会强制你再按一次键,看起来像是print需要按第二次才触发。
修复方案
把按键读取操作放在循环开头,将结果存到变量里,所有判断都基于这个变量,这样一次按键只读取一次:
import keyboard while True: pressed_key = keyboard.read_key() if pressed_key == "up": print("up") elif pressed_key == "down": print("down") elif pressed_key == "enter": print("enter")
用elif替代多个独立if的好处是,一旦某个条件匹配,就不会再检查后续的条件,能避免不必要的判断逻辑,同时彻底解决重复读取按键的问题。
内容的提问来源于stack exchange,提问作者Sedus
相关产品推荐
相关产品推荐

