在pygame中打印keydown事件时的预期输出

时间:2019-06-06 02:04:02

标签: python pygame

我正在关注Eric Matthes的书“ Python Crash Course”,并正在练习12-4“ Keys”。本练习的目的是测试空白pygame屏幕的打印输出,该屏幕将打印每个keydown事件。我试图确保我的输出正确,并弄清楚输出的含义。

执行文件并弹出空白屏幕后,我输入各种键(字母,数字,箭头等)。在终端外壳上,将打印出一系列数字。例如,如果我输入“ g”,“ p”,向上箭头和“ 2”,则会打印出以下数字: 103 112 273 50 这是正确的还是我应该看到其他东西?输出是什么意思?每个键都有对应的数字吗?

这是我正在使用的代码:

import sys

import pygame

def run_game():
    #Initialize game and create a screen object.
    pygame.init()
    screen = pygame.display.set_mode((1200,800))
    pygame.display.set_caption("Keys")
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                print(event.key)
        pygame.display.flip()

run_game()

3 个答案:

答案 0 :(得分:1)

简短而简单的答案是肯定的。您会看到每个键的键码。

Pygame基于SDL,因此要查看所有键码的列表,请查看SDL文档(SDLKeycodeLookup)。

答案越长:更加复杂,因为还有特定于平台的scancode(SDL_Scancode),但是您通常不必担心。

需要了解的一个更令人感兴趣的事情是,%config事件具有一个pygame.KEYDOWN属性,该属性表示单个字符串,该字符串是输入的完全翻译的字符。

答案 1 :(得分:0)

是的,键盘上的每个键都有一个数字。

您可以在this ascii table上看到其中一些数字。 (您显然正在打印十进制代码。)

答案 2 :(得分:0)

如果在打印命令中不使用“ .key”,则可以看到更好的响应。

例如,在代码中按“输入”,您将看到:"13"

仅使用print(event),您将看到:

<Event(768-KeyDown {'unicode': '', 'key': 13, 'mod': 4096, 'scancode': 40, 'window': None})>