Я опубликовал ту же проблему на github, потому что я не уверен, что это проблема с Pygame или я что-то не так делаю: https://github.com/pygame/pygame/issues/1619
Я пытаюсь использовать Pygame в проект, в котором я должен получить текущее мгновенное состояние клавиатуры. Согласно https://devdocs.io/pygame/ref/key#pygame .key.get_pressed , функция get_pressed () должна делать это, однако, по-видимому, этого не происходит: похоже, она возвращает первый не обработанный фрейм события вместо последнего.
Показывает этот фрагмент кода:
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
Если во время, скажем, sleep () итерации 5, я дважды нажимаю и отпускаю клавишу «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
Я бы ожидал увидеть здесь только нули или только одну '1' на итерации 6, если бы я все еще нажимал ' a 'в конце сна ().
Я что-то не так делаю? И если да, можете ли вы помочь мне восстановить текущее состояние клавиатуры, пожалуйста? Спасибо!