Pygame 的 pygame.event.get() 的键值在今天是一个荒谬的数字,为什么?

问题描述

我的程序过去常常运行以下代码,当我按下左移时它运行良好。但截至今天,它突然停止工作,没有更改代码,没有重新安装,没有更新,因为它正在工作并停止工作。

#running on windows 10
while True:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            print(event)
            if event.key == 304:#left shift
                print("worked")

打印(事件)的输出曾经是:

现在是:

我知道如何解决它,或者以不同的方式解决它,但是有人知道 'key' 突然变成一个荒谬数字的原因吗?是不是我的电脑有问题,它给出的键值搞砸了?

解决方法

如果您不自己编写关键代码会有所帮助。如果使用预定义的 pygame 密钥会更好,例如:

while True:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            print(event)
            if event.key == pygame.K_LSHIFT:
                print("worked")

这是 pygame 的预定义键列表。

pygame documentation - pygame.key

,

如果您想检测是否按下了 LEFT,请使用 pygame.K_LEFT

让我参考 pygame.key 模块的文档:

可移植性说明:pygame 1 和 2 之间键常量的整数不同。始终使用键常量 (K_a) 而不是直接使用整数 (97),以便您的键处理代码在 pygame 1 和 pygame 上都能正常工作2.

密钥的用户友好名称可以通过 pygame.key.name() 获得:

从键盘按钮 id 常量中获取按钮的描述性名称。

键盘事件 KEYDOWNKEYUP(参见 pygame.event 模块)创建一个带有附加属性的 pygame.event.Event 对象。按下的键可以从 key 属性中获取。 unicode 属性提供键盘输入的 Unicode 表示。