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

问题描述 投票:0回答:3

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

#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")

print(event) 的输出曾经是:

现在是:

我知道如何修复它,或者以不同的方式进行,但是有人知道

'key'
突然变成一个荒谬的数字的原因吗?我的电脑是否有问题,导致它给出的键值混乱?

python pygame
3个回答
2
投票

如果您不自己编写关键代码,将会有所帮助。如果使用预定义的 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 文档 - pygame.key


2
投票

如果您想检测是否按下了

LEFT
,请使用 pygame.K_LEFT

我参考一下

pygame.key
模块的文档:

可移植性说明:pygame 1 和 2 之间键常量的整数不同。始终使用键常量 (

K_a
) 而不是直接使用整数 (97),以便您的键处理代码在 pygame 1 和 pygame 2 上都能正常运行。

密钥的用户友好名称可以通过

pygame.key.name()
:

获得

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

键盘事件

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


0
投票

您已启用数字锁定。

启用

num-lock
后,
event.mod
4096
而不是
0
(
pygame.KMOD_NONE
)

© www.soinside.com 2019 - 2024. All rights reserved.