Почему я получаю событие Pygame KEYUP без отпускания ключа? - PullRequest
0 голосов
/ 20 мая 2018

Во-первых, я начинающий, поэтому у меня нет опыта, однако я искал все возможные места за последние 2 дня и не смог его найти.

I 'Я использую это на Raspberry PI 3 с Raspbian.

Я пытаюсь создать простой код на Python 3.6, который будет делать следующее: При нажатии клавиши клавиатуры:

1.itдолжен печатать «нажать», если клавиша была нажата, без повторения.

(если клавиша удерживается нажатой, она должна печатать «нажать» только один раз и останавливаться).

2.Это должно напечатать 'release', если ключ был отпущен без повторения.

В основном я хочу напечатать один раз последнее состояние ключа,

Проблема, с которой я столкнулся,:

, удерживая нажатой клавишу, я получаю последовательные события нажатия / выпуска, нажатия / выпуска нажатия / выпуска, даже если ни одна клавиша не была отпущена физически, вместо того, чтобы получать только 1 «нажатие».

Ниже приведен код, который я пытаюсь использовать.

#!/usr/bin/env python
import pygame
from pygame.locals import *
from time import sleep
import time

pygame.init()
screen = pygame.display.set_mode((800,800))

keys= [False]
last = None
pygame.key.set_repeat()

while True:
        if keys[0]==True and last != 'press': 
            print ('press')
            last = 'press'

        if keys[0]==False and last != 'release':
            print('release')
            last = 'release'

        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                pygame.quit()
                exit(0)

            if event.type == pygame.KEYDOWN:
                if event.key==K_d:
                    keys[0]=True                        

            if event.type == pygame.KEYUP:
                if event.key==K_d:
                    keys[0]=False

1 Ответ

0 голосов
/ 20 мая 2018

Проблема решена, потому что я использовал VNC вместо клавиатуры, напрямую подключенной к Raspberry Pi.

...