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

如何关联两个Pygame-menu菜单 实现跳转关卡选择及返回功能

Pygame-menu双菜单跳转合并实现方案

你只需要合并两个菜单的重复初始化逻辑,通过pygame-menu内置的菜单层级功能即可实现跳转,不需要分开运行两个文件,合并后的可运行完整代码如下:

import pygame
import pygame_menu
from pygame import mixer

# 公共初始化仅执行一次,避免重复加载资源
pygame.init()
surface = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Projecte MatZanfe")
# 加载窗口图标,确保calculator.png在脚本同级目录
logotip = pygame.image.load("calculator.png")
pygame.display.set_icon(logotip)

# 全局字体定义
font = pygame_menu.font.FONT_8BIT
font1 = pygame_menu.font.FONT_NEVIS
font2 = pygame_menu.font.FONT_BEBAS

# 先定义关卡选择菜单
selector_menu = pygame_menu.Menu('Selecció dels mòduls', 600, 400,
                               theme=pygame_menu.themes.THEME_SOLARIZED)
selector_menu.add.button('Sums', font_name=font2, font_color='green')
selector_menu.add.button('Subtracts', font_name=font2, font_color='blue')
selector_menu.add.button('Multiplications', font_name=font2, font_color='red')
selector_menu.add.button('Divisions', font_name=font2, font_color='purple')

# Back按钮自定义回调:停止背景音乐后返回上一级菜单
def back_to_start():
    mixer.music.stop()
    selector_menu._back()
selector_menu.add.button("Back", back_to_start, font_name=font1, font_color='black')

# 再定义启动菜单
start_menu = pygame_menu.Menu('Projecte MatZanfe', 600, 400,
                           theme=pygame_menu.themes.THEME_SOLARIZED)
user_input = start_menu.add.text_input('User: ', font_name=font1, font_color='blue')
age_input = start_menu.add.text_input('Age: ', font_name=font1, font_color='Black')

# Start按钮自定义回调:播放背景音乐+打开关卡选择菜单
def open_selector():
    # 确保LevelSelector.wav在脚本同级目录
    mixer.music.load('LevelSelector.wav')
    mixer.music.play(-1)
    # 如需使用用户输入的信息,可在这里获取:
    # username = user_input.get_value()
    # age = age_input.get_value()
    start_menu._open(selector_menu)

start_menu.add.button('Start', open_selector, font_name=font, font_color='green')
start_menu.add.button('Exit', pygame_menu.events.EXIT, font_name=font, font_color='red')

# 仅运行一次启动菜单的主循环即可
start_menu.mainloop(surface)

核心实现逻辑

  • 移除了两份代码里重复的pygame初始化、窗口创建逻辑,所有公共资源仅加载一次
  • 两个菜单分别命名为start_menu和selector_menu避免变量冲突,通过pygame-menu内置的层级管理实现跳转
  • 启动菜单的Start按钮绑定打开关卡选择菜单的动作,关卡菜单的Back按钮绑定返回上一级菜单的动作
  • 背景音乐仅在进入关卡选择菜单时播放,返回启动菜单时自动停止,你也可以根据需求调整播放逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:21:02