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

如何在Pygame Menu的角色选择器中添加对应角色图片?

在Pygame Menu角色选择器中添加角色图片的解决方案

pygame_menu的Selector组件默认不支持直接在选项下方显示对应图片,你可以通过自定义角色选择按钮组的方式来实现需求,每个按钮同时展示角色名称和图片,并处理选中状态。

修改后的完整代码示例

import pygame
import pygame_menu
from pygame_menu import themes

# 全局变量
skin_h = 'images\чп.png'
selected_character_id = 1  # 默认选中第一个角色

def set_hero(character_id):
    global skin_h, selected_character_id
    selected_character_id = character_id
    # 根据角色ID设置对应的皮肤路径
    if character_id == 1:
        skin_h = 'images\чп.png'
    elif character_id == 2:
        skin_h = 'images\iron man.png'
    elif character_id == 3:
        skin_h = 'images\A usa man.png'
    elif character_id == 4:
        skin_h = 'images\dead pool.png'
    print(f"选中角色ID: {character_id}, 皮肤路径: {skin_h}")

def character_menu():
    global selected_character_id
    skins_h = pygame_menu.Menu('Select a Character', 700, 700, theme=themes.THEME_BLUE)
    
    # 整理角色数据:(名称, ID, 图片路径)
    characters = [
        ('Spider man', 1, 'images\чп.png'),
        ('Iron man', 2, 'images\iron man.png'),
        ('Captain America', 3, 'images\A usa man.png'),
        ('Dead Pool', 4, 'images\dead pool.png')
    ]
    
    # 遍历角色数据,创建带图片和文字的选择按钮
    for name, char_id, img_path in characters:
        # 加载并缩放图片(根据菜单尺寸调整大小)
        img = pygame.image.load(img_path)
        img = pygame.transform.scale(img, (100, 100))  # 调整图片大小
        
        # 创建自定义按钮回调,绑定当前角色ID
        def create_button_callback(cid):
            return lambda: set_hero(cid)
        
        # 添加角色名称按钮
        button = skins_h.add.button(
            title=name,
            action=create_button_callback(char_id),
            font_size=20
        )
        # 计算图片显示位置:按钮下方居中
        btn_rect = button.get_rect()
        img_rect = img.get_rect(center=(btn_rect.centerx, btn_rect.bottom + 60))
        
        # 定义图片绘制回调,在菜单更新时渲染图片和选中边框
        def draw_image(surface):
            surface.blit(img, img_rect)
            # 为选中角色添加黄色高亮边框
            if selected_character_id == char_id:
                pygame.draw.rect(surface, (255, 255, 0), img_rect.inflate(10, 10), 3)
        
        skins_h.add.draw_callback(draw_image)
    
    skins_h.add.button('Back', pygame_menu.events.BACK)
    skins_h.mainloop(surface)

def start_the_game():
    print(f"开始游戏,使用角色皮肤: {skin_h}")
    # 这里编写你的游戏启动逻辑

# 初始化pygame
pygame.init()
surface = pygame.display.set_mode((700, 700))
mainmenu = pygame_menu.Menu('Welcome', 700, 700, theme=themes.THEME_SOLARIZED)
mainmenu.add.button('Choose your character', character_menu)
mainmenu.add.button('Play', start_the_game)
mainmenu.mainloop(surface)

关键修改说明

  1. 角色数据整合:把角色名称、ID、图片路径整理成统一列表,便于批量创建选择项。
  2. 图片与按钮绑定:加载并缩放角色图片,通过菜单的draw_callback在对应按钮下方绘制图片。
  3. 选中状态可视化:新增selected_character_id变量跟踪选中角色,为选中项添加高亮边框,提升交互直观性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:45:23