Как восстановить мгновенное (последнее) состояние клавиатуры с помощью pygame? - PullRequest
0 голосов
/ 05 апреля 2020

Я опубликовал ту же проблему на 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 'в конце сна ().

Я что-то не так делаю? И если да, можете ли вы помочь мне восстановить текущее состояние клавиатуры, пожалуйста? Спасибо!

1 Ответ

0 голосов
/ 07 апреля 2020

Это ошибка в 1.9.6

Версия 2.0.0 исправляет ее.

...