Pygame: событие клавиатуры не обнаружено (после обновления Catalina Ma c) - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь запустить приведенный ниже код, используя python и pygame, и я пробовал много вещей, но я смог найти решение для программы для обнаружения событий клавиатуры (стрелки) ... И я начинаю думать, что это связан с обновлением Catalina моей ОС Ma c. До обновления этот код работал нормально ... Я думаю, это связано с «Доступностью» между Python / Terminal и правами, которые я даю этим двум приложениям, но я не могу найти точный «правильный доступ», который решает проблема ...

У кого-нибудь есть идеи? :)

# coding=utf-8

# imports the Pygame library
import pygame


def main():
    # initializes Pygame
    pygame.init()

    # sets the window title
    pygame.display.set_caption(u'Keyboard events')

    # sets the window size
    pygame.display.set_mode((400, 400))

    # infinite loop
    while True:
        # gets a single event from the event queue
#        event = pygame.event.wait()
        pygame.event.pump()

        # if the 'close' button of the window is pressed
        if event.type == pygame.QUIT:
            # stops the application
            break

        # captures the 'KEYDOWN' and 'KEYUP' events
        if event.type in (pygame.KEYDOWN, pygame.KEYUP):
            # gets the key name
            key_name = pygame.key.name(event.key)

            # converts to uppercase the key name
            key_name = key_name.upper()

            # if any key is pressed
            if event.type == pygame.KEYDOWN:
                # prints on the console the key pressed
                print("{} key pressed".format(key_name))

            # if any key is released
            elif event.type == pygame.KEYUP:
                # prints on the console the released key
                print("{} key released".format(key_name))

    # finalizes Pygame
    pygame.quit()


if __name__ == '__main__':
    main()

1 Ответ

1 голос
/ 10 марта 2020

Если вы хотите обрабатывать события клавиатуры, используйте для l oop. Например:

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        break

    elif event.type == pygame.KEYDOWN:
        print(f"{event.key} key pressed")

Я не уверен, как ваш код работал раньше.

...