You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pygame事件中获取K_UP这类按键常量的字符串形式?

解决方法

方法1:手动创建按键映射字典

直接定义一个字典,把Pygame按键常量和对应的字符串名称一一对应,拿到事件的ev.key后,查字典就能得到"K_UP"格式的字符串:

# 定义按键映射字典,可根据需求添加更多按键
KEY_NAME_MAP = {
    pygame.K_UP: "K_UP",
    pygame.K_DOWN: "K_DOWN",
    pygame.K_LEFT: "K_LEFT",
    pygame.K_RIGHT: "K_RIGHT",
    pygame.K_SPACE: "K_SPACE",
    # 其他需要的按键继续补充
}

# 在事件处理逻辑里使用
for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        # 从字典取对应字符串,未定义的按键默认返回pygame.key.name的结果
        key_str = KEY_NAME_MAP.get(event.key, pygame.key.name(event.key))
        # 调用你的input函数
        self.input(key_str)

方法2:自动生成完整按键映射字典

如果需要覆盖所有Pygame按键,手动写字典太繁琐,可以遍历Pygame模块里所有以K_开头的属性,自动生成映射字典:

import pygame

# 自动生成所有K_开头的按键常量到字符串的映射
KEY_NAME_MAP = {}
for attr in dir(pygame):
    if attr.startswith("K_"):
        key_constant = getattr(pygame, attr)
        KEY_NAME_MAP[key_constant] = attr

# 使用方式和方法1一致
for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        key_str = KEY_NAME_MAP.get(event.key, pygame.key.name(event.key))
        self.input(key_str)

适配现有input函数

经过上面的处理,传递给input函数的key参数就是"K_UP"这类字符串,完全符合你现有函数的接收要求,不用修改原input函数逻辑,直接复用即可。

内容的提问来源于stack exchange,提问作者Kia Azad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:40:17