import PySimpleGUI as sg """ Demo - Basic window design pattern * Creates window in a separate function for easy "restart" * Saves theme as a user variable * Puts main code into a main function so that multiprocessing works if you later convert to use Copyright 2020 PySimpleGUI.org """ # ------------------- Create the window ------------------- def make_window(): # Set theme based on previously saved sg.theme(sg.user_settings_get_entry('theme', None)) # ----- Layout & Window Create ----- layout = [[sg.T('This is your layout')], [sg.OK(), sg.Button('Theme', key='-THEME-'), sg.Button('Exit')]] return sg.Window('Pattern for theme saving', layout) # ------------------- Main Program and Event Loop ------------------- def main(): window = make_window() while True: event, values = window.read() if event == sg.WINDOW_CLOSED or event == 'Exit': break if event == '-THEME-': # Theme button clicked, so get new theme and restart window ev, vals = sg.Window('Choose Theme', [[sg.Combo(sg.theme_list(), k='-THEME LIST-'), sg.OK(), sg.Cancel()]]).read(close=True) if ev == 'OK': window.close() sg.user_settings_set_entry('theme', vals['-THEME LIST-']) window = make_window() window.close() if __name__ == '__main__': main()