如何在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
相关产品推荐
相关产品推荐

