如何解决Python中keyboard.is_pressed()在while True循环的输出刷屏问题
解决键盘按键重复触发输出的问题
问题场景
想要实现按下数字键0时输出一次0,但使用keyboard.is_pressed()的循环代码会在按住按键期间持续刷屏输出:
原代码
import keyboard while True: if keyboard.is_pressed('0'): print('0')
原输出
0 0 0 0 0 0 0...
解决方案
通过跟踪按键的状态变化,仅在按键刚被按下的瞬间触发输出,无需time.sleep()或quit()。核心是用一个变量记录上一次的按键状态,只在状态从"未按下"变为"按下"时执行输出:
修改后的代码
import keyboard # 初始化按键状态为未按下 prev_key_state = False while True: current_key_state = keyboard.is_pressed('0') # 仅当当前按下且之前未按下时输出 if current_key_state and not prev_key_state: print('0') # 更新状态记录 prev_key_state = current_key_state
原理说明
循环中每次检测当前按键状态,通过对比prev_key_state和current_key_state,确保只有在按键按下的第一个循环周期满足输出条件。按住按键时,current_key_state会保持True,prev_key_state也会同步更新为True,因此不会重复触发输出。
内容的提问来源于stack exchange,提问作者Jonas Gurevicius
相关产品推荐
相关产品推荐

