PySampleGUI 刷新窗口,更改设置

点击更改设置按钮,在新界面中输入alpha值调整窗口透明度。
点击save按钮应用设置

import PySimpleGUI as sg

SETTINGS = {"alpha":1}

def ChangeSetting(settings):

    def TextLabel(text):
        return sg.Text(text+':', justification='r', size=(15, 1))

    layout = [ [sg.Text('Settings', font='Any 15')],
               [TextLabel('Alpha'), sg.Input(size=(15,1), key='-ALPHA-', enable_events=True)],
               [sg.Button('Save'), sg.Button('Exit')]
               ]
    window = sg.Window('setting', layout)

    while True:
        event, values = window.read()
        if event == '-ALPHA-' and values['-ALPHA-'] and values['-ALPHA-'][-1] not in '1234567890.':
            window['-ALPHA-'].update(values['-ALPHA-'][:-1])

        if event == 'Save' and values['-ALPHA-']:
            try:
                alpha = float(values['-ALPHA-'])
                if 0.3 <= alpha <= 1:
                    settings['alpha'] = values['-ALPHA-']
                    break
                else:
                    sg.popup('alpha must 0.3 <= alpha <= 1')
            except:
                sg.popup('alpha must 0.2 < alpha < 0.8')

        if event in ['Exit', sg.WIN_CLOSED]:
            break
    window.close()
    return True

def CreateMainWindow(setting):
    main_layout = [[sg.Text("Main Window!")],
                   [sg.Button('Change settings'), sg.Button('Exit')]]
    main_window = sg.Window('Main Window', main_layout)
    return main_window

if __name__ == '__main__':
    main_window = CreateMainWindow(SETTINGS)

    while True:
        event, values = main_window.read()
        if event == 'Change settings':
            ChangeSetting(settings=SETTINGS)
            main_window.set_alpha(SETTINGS['alpha'])

        if event in ['Exit', sg.WIN_CLOSED]:
            break
    main_window.close()