Ввод с клавиатуры - PullRequest
       4

Ввод с клавиатуры

0 голосов
/ 05 июня 2018

Я пишу с Python на моем Raspberry Pi.Python не мой лучший язык, так что терпите меня.

Мне нужен простой код, который реагирует на нажатия клавиш на моей клавиатуре.Я бы сделал это, чтобы установить широтно-импульсную модуляцию, но этот код мне не нужен, он у меня уже есть.Моя главная проблема в том, что я пытаюсь понять функциональность pygame, необходимую для моей задачи.

Я хотел бы иметь возможность набирать клавишу, например, "стрелка вверх" ииметь программный вывод "up pressed" для каждой миллисекунды нажата стрелка вверх.

Псевдокод будет выглядеть так:

double x = 1
while x == 1:
    if input.key == K_UP:
        print("Up Arrow Pressed")
    if input.key == K_q
        x = 2
    wait 1ms

pygame.quit()

Опять же, я понятия не имею, что импортировать или вызывать из-зане зная синтаксиса.

1 Ответ

0 голосов
/ 05 июня 2018

Вот некоторый код, который будет проверять, нажата ли клавиша :

import pygame
pygame.init()

clock = pygame.time.Clock()
screen = pygame.display.set_mode([320,240])

done = False
while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP]:
        print("Up Arrow Pressed")
    elif keys[pygame.K_q]:
        done = True

    clock.tick(1000)

pygame.quit()

Обратите внимание, что clock.tick (1000) будет предел код до одной тысячи кадров в секунду, поэтому он не будет точно соответствовать желаемой задержке в 1 миллисекунду.На моем компьютере частота кадров составляет всего около шестисот.

Возможно, вам следует смотреть на события нажатия клавиш и вверх и переключать свой выход, тогда?

import pygame
pygame.init()

clock = pygame.time.Clock()
screen = pygame.display.set_mode([320,240])

done = False
output = False
while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                output = True
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_UP:
                output = False
            elif event.key == pygame.K_q:
                done = True

    pygame.display.set_caption(f"Output Status {output}")
    clock.tick(60)

pygame.quit()

Есливы запустите это, вы увидите название изменения окна, пока нажата клавиша .

...