为何Python按一次键却向列表添加两个元素?如何解决?
问题解决
问题根源在于read_key()会同时捕获**按键按下(KEY_DOWN)和按键释放(KEY_UP)**两个事件,所以每按一次键,这个函数会被调用两次,导致列表中添加两个相同的元素。
方案一:使用wait()替代read_key()
wait()默认只监听按键按下事件,按一次键只会触发一次:
import keyboard charList = [] while True: key = keyboard.wait() charList.append(key) print(charList)
方案二:监听按键事件并过滤类型
通过read_event()获取完整事件,只处理按下动作:
import keyboard charList = [] while True: event = keyboard.read_event() if event.event_type == keyboard.KEY_DOWN: charList.append(event.name) print(charList)
你提到用pop()无法正常添加元素,本质也是因为两次触发导致刚添加就被弹出,用上面的方案就能解决这个衍生问题。
内容的提问来源于stack exchange,提问作者Brockdish
相关产品推荐
相关产品推荐

