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

如何在pygame-menu中获取text_input文本字段的输入值

解决方案

方式1:单独存储文本输入框组件引用

你可以在创建文本输入框的时候把它赋值给一个变量,回调函数里直接读取这个变量的当前值即可,修改后的代码如下:

import pygame
import pygame_menu
from game import Game

def start_the_game():
    # 直接读取输入框的当前值
    player_name = name_input.get_value()
    Game(player_name).run()

pygame.init()
# 注意:原代码这里set_mode参数需要是元组,补充了括号否则会报错
screen = pygame.display.set_mode((900, 600))
screen.fill((0,0,0))

menu = pygame_menu.Menu("Let's play!", 400, 300,
                        theme=pygame_menu.themes.THEME_DARK)

# 把输入框组件存为变量
name_input = menu.add.text_input('Name :', default='A Player')
menu.add.button('Play', start_the_game)
menu.add.button('Quit', pygame_menu.events.EXIT)

menu.mainloop(screen)

方式2:直接获取菜单所有输入值

如果你的表单输入项比较多,不想单独存每个输入框的变量,可以直接调用菜单的get_input_values()方法,会返回所有输入项的键值对字典:

import pygame
import pygame_menu
from game import Game

def start_the_game():
    # 一次性获取所有输入项的字典,默认key就是输入框的前缀文本
    input_data = menu.get_input_values()
    player_name = input_data['Name :']
    Game(player_name).run()

pygame.init()
screen = pygame.display.set_mode((900, 600))
screen.fill((0,0,0))

menu = pygame_menu.Menu("Let's play!", 400, 300,
                        theme=pygame_menu.themes.THEME_DARK)

menu.add.text_input('Name :', default='A Player')
menu.add.button('Play', start_the_game)
menu.add.button('Quit', pygame_menu.events.EXIT)

menu.mainloop(screen)

提示:如果担心修改输入框显示文本会导致取值失败,可以在创建输入框时指定input_id参数:

menu.add.text_input('Name :', default='A Player', input_id='player_name')

后续取值直接用input_data['player_name']即可,不受显示文本修改影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:03