From dbf0bfc2978702634f08f16dec57d36bdd72bb27 Mon Sep 17 00:00:00 2001 From: PySimpleGUI Date: Fri, 16 Oct 2020 10:07:10 -0400 Subject: [PATCH] New Demo - Design pattern for main func, window create, and saving theme from one run to the next --- .../Demo_Design_Pattern_Save_Theme.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 DemoPrograms/Demo_Design_Pattern_Save_Theme.py diff --git a/DemoPrograms/Demo_Design_Pattern_Save_Theme.py b/DemoPrograms/Demo_Design_Pattern_Save_Theme.py new file mode 100644 index 00000000..3d0e0849 --- /dev/null +++ b/DemoPrograms/Demo_Design_Pattern_Save_Theme.py @@ -0,0 +1,46 @@ +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() +