如何使用 pygame 检索键盘的瞬时(最后)状态?

How to retrieve the instantaneous (last) state of the keyboard with pygame?

我在 github 上发布了同样的问题,因为我不确定这是 pygame 问题还是我做错了什么:https://github.com/pygame/pygame/issues/1619

我正在尝试在必须获取键盘当前瞬时状态的项目中使用 pygame。根据 https://devdocs.io/pygame/ref/key#pygame.key.get_pressed , get_pressed() 函数应该这样做,但显然它没有:它似乎 return 它没有处理的第一个事件框架而不是最后一个。

显示的是这个代码片段:

import pygame
import time

pygame.init()
gameDisplay = pygame.display.set_mode((100, 100))

i = 0
while True:
    events = pygame.event.get()
    keys = pygame.key.get_pressed()
    print(f"iter:{i}")
    # print(f"events:{events}")
    print(f"keys[pygame.K_a]:{keys[pygame.K_a]}")
    time.sleep(5.0)
    i = i + 1

如果在第 5 次迭代的 sleep() 期间,我按下并释放两次 'a' 键(顺便说一句,在我的法语键盘上似乎是 'q'),发生以下情况:

iter:5
keys[pygame.K_a]:0
iter:6
keys[pygame.K_a]:0
iter:7
keys[pygame.K_a]:1
iter:8
keys[pygame.K_a]:0
iter:9
keys[pygame.K_a]:1
iter:10
keys[pygame.K_a]:0
iter:11
keys[pygame.K_a]:0

如果我在 sleep() 结束时仍按 'a',我希望在这里只看到零,或者在第 6 次迭代时只看到一个“1”。

我做错了什么吗?如果是这样,你能帮我取回键盘的当前状态吗?谢谢!

这是 1.9.6 中的错误

版本 2.0.0 更正了它。