为什么我没有释放密钥就得到 Pygame KEYUP 事件?

Why do I get Pygame KEYUP event without releasing the key?

首先,我是一个完全的初学者,所以我没有任何经验,但是这两天我已经搜索了所有可能的地方来解决,但没有找到。

我在 Raspberry PI 3 和 Raspbian 上使用它。

我正在尝试在 Python 3.6 中构建一个简单的代码,它将执行以下操作: 当按下键盘键时:

如果按键被按下,

1.it 应该打印 'press',而不重复。

(如果按住该键,它应该只打印一次 'press' 并停止)。

2.it 应该打印 'release' 如果键没有重复就被释放了。

基本上我想打印一次键的最后状态,

我遇到的问题是:

在按住键的同时,我得到了连续的 press/release press/release press/release 事件,即使没有物理释放键,而不是只得到 1 'press'.

下面是我正在尝试使用的代码。

#!/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

问题已解决,因为我使用的是 VNC 而不是使用直接连接到 Raspberry Pi 的键盘。