【问题标题】:Closing windows when calling multiple functions调用多个函数时关闭窗口
【发布时间】:2021-05-15 11:58:00
【问题描述】:

所以我正在使用 PySimpleGui 练习并创建一个字符表。我有一个触发顶部“if 事件”的按钮,但是当 create_name 函数返回“name”时,窗口不会关闭,我打开下一个函数窗口并最终打开多个窗口。有没有办法将窗口作为返回函数的一部分关闭,或者有更简单的方法来转换到新函数?

        if event == 'Create New Character':
            player_character.character_name = create_name()
            player_character.selected_profession = create_profession()

def create_name():
    layout = [
        [sg.Text('Enter your character name: ')],
        [sg.InputText('', key='name_text')],
        [sg.Button('Continue'), sg.Exit()]
    ]

    window = sg.Window('MERP Character Creation', layout)

    while True:
        event, values = window.Read()
        if event is None or event == 'Exit':
            break

        if event == 'Continue':
            name = values['name_text'] 
            return name


    window.Close()

【问题讨论】:

    标签: python pysimplegui


    【解决方案1】:

    return之前保留声明window.close()

    两个例子,记住window.close()不代表函数结束。

        while True:
    
            event, values = window.read()
            if event is None or event == 'Exit':
                break
    
            if event == 'Continue':
                name = values['name_text']
                window.close()
                return name
    
        window.close()
    
        while True:
    
            event, values = window.read()
            if event is None or event == 'Exit':
                result = None
                break
    
            if event == 'Continue':
                result = values['name_text']
                break
    
        window.close()
        return result
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2018-06-25
      相关资源
      最近更新 更多