如何从 pygame-menu 中的 text_input 获取值?

How to get value from text_input in pygame-menu?

我有菜单。在这个菜单中,我有一个“名称”字段,用户可以在其中输入他的名字。我需要使用此名称进行进一步处理。我应该怎么做?我有一些代码:

menu.add.text_input('name:', default='player') # I NEED THIS VALUE.
menu.add.selector('difficulty', [('easy', "EASY"), ('medium', 'MEDIUM'), ('hard', 'HARD')], onchange=change_difficulty, style='fancy', style_fancy_arrow_margin=(0, 0, 0), style_fancy_bgcolor=(0, 0, 0, 0), style_fancy_bordercolor=(0, 0, 0, 0), style_fancy_arrow_color=(220, 132, 201))
menu.add.button('play', start_the_game, DIFFICULTY)
menu.add.button('quit', pygame_menu.events.EXIT)

while True:

    screen.blit(bg_image, (0, 0))

    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            exit()

    if menu.is_enabled():
        menu.update(events)
        menu.draw(screen)
    
    pygame.display.update()

与其他事件驱动语言一样,例如C# 你需要将一个函数绑定到你在菜单中添加的输入字段的 on change 事件,这样你的代码就会像这样

menu.add.text_input('name:', default='player', onchange= MyTextValue) # Function is bind here
menu.add.selector('difficulty', [('easy', "EASY"), ('medium', 'MEDIUM'), ('hard', 'HARD')], onchange=change_difficulty, style='fancy', style_fancy_arrow_margin=(0, 0, 0), style_fancy_bgcolor=(0, 0, 0, 0), style_fancy_bordercolor=(0, 0, 0, 0), style_fancy_arrow_color=(220, 132, 201))
menu.add.button('play', start_the_game, DIFFICULTY)
menu.add.button('quit', pygame_menu.events.EXIT)

def MyTextValue(name):
    #on input change your value is returned here
    print('Player name is', name)

while True:

    screen.blit(bg_image, (0, 0))

    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            exit()

    if menu.is_enabled():
        menu.update(events)
        menu.draw(screen)
    
    pygame.display.update()