python - pygame KEYDOWN事件和按键事件

标签 python pygame keydown

您好,在使用 pygame 开发游戏时,有一个问题并不重要,但它一直困扰着我一段时间。

    while not gameExit:
        for event in pygame.event.get():e
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    pass

上面是一个工作代码,我相信

    while not gameExit:
        for event in pygame.event.get():e
            if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
                pass

也有效。

但是,当我尝试像“event.key == pygame.K_RIGHT:”这样的东西时,python 给我一个错误,说没有属性“key”。 虽然我知道选择以上 2 个代码而不是“event.key == pygame.K_RIGHT:”更合理,但我不知道为什么 pygame 会说事件没有属性“key”,而当我只是检查 event.type == pygame.KEYDOWN pygame 执行“event.key == pygame.K_RIGHT”是否没有问题。

检查 event.type == pygame.KEYDOWN 是否实际上会为事件生成“key”属性?

最佳答案

并非每个事件都具有所有可能的属性。这就是为什么您必须首先检查事件的类型。

Here's每种事件类型的所有属性的列表:

QUIT             none
ACTIVEEVENT      gain, state
KEYDOWN          unicode, key, mod
KEYUP            key, mod
MOUSEMOTION      pos, rel, buttons
MOUSEBUTTONUP    pos, button
MOUSEBUTTONDOWN  pos, button
JOYAXISMOTION    joy, axis, value
JOYBALLMOTION    joy, ball, rel
JOYHATMOTION     joy, hat, value
JOYBUTTONUP      joy, button
JOYBUTTONDOWN    joy, button
VIDEORESIZE      size, w, h
VIDEOEXPOSE      none
USEREVENT        code

如您所见,只有 KEYDOWNKEYUP 事件具有 key 属性。

关于python - pygame KEYDOWN事件和按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35593200/

相关文章:

python - 我应该将 API 凭证的环境变量放在哪里?

python - 而无限循环python

python - Pygame,RPG 游戏的高效碰撞处理?

python - Pygame 问题和持有多个键

javascript - AngularJS 按两次按键,每次按键后执行不同的操作

python - 如何使用python更改AWS可​​信用户 "sts ExternalId"?

python - 为什么 python 日志记录日志文件不按顺序?

python - 当我在 pygame 中打印某些内容时,错误消失了

C#按键; Label 中的显示键

c++ - 在 Linux C++ 上检测 keydown 和 keyup 事件