Pygame - 键盘事件


Pygame 识别 KEYUP 和 KEYDOWN 事件。pygame.key 模块定义了对于处理键盘交互有用的函数。当按键被按下和释放时,pygame.KEYDOWN 和 pygame.KEYUP 事件被插入到事件队列中。key 属性是一个整数 ID,代表键盘上的每个键。

import pygame, sys
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Hello World")
while True:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         pygame.quit()
         sys.exit()
      if event.type == pygame.KEYDOWN:
         key=pygame.key.name(event.key)
         print (key, "Key is pressed")
      if event.type == pygame.KEYUP:
         key=pygame.key.name(event.key)
         print (key, "Key is released")

运行上面的代码并在 Pygame 窗口处于活动状态时按各个键。以下是 Python 控制台上的示例输出。

q Key is pressed
q Key is released
right shift Key is released
1 Key is pressed
1 Key is released
enter Key is pressed
enter Key is released
backspace Key is pressed
backspace Key is released
x Key is pressed
x Key is released 
home Key is pressed
home Key is released
f1 Key is pressed
f1 Key is released
left Key is pressed
left Key is released
right Key is pressed
right Key is released
up Key is pressed
up Key is released
down Key is pressed
down Key is released

正如我们所看到的,event.key 属性返回与每个键关联的唯一标识符。左、右、上、下方向键在游戏中经常使用。如果检测到特定的按键,我们可以纠正适当的逻辑。

下面列出了 pygame.key 模块中的其他有用属性 -

pygame.key.get_pressed 获取所有键盘按钮的状态
pygame.key.get_mods 确定正在按住哪些修饰键
pygame.key.set_repeat 控制如何重复按住的按键
pygame.key.get_repeat 查看按住的按键如何重复
pygame.key.name 获取密钥标识符的名称
pygame.key.key_code 从密钥名称获取密钥标识符
pygame.key.start_text_input 开始处理 Unicode 文本输入事件
pygame.key.stop_text_input 停止处理 Unicode 文本输入事件