-
Notifications
You must be signed in to change notification settings - Fork 66
/
Copy pathDemo_Design_Pattern_Save_Theme.py
45 lines (32 loc) · 1.39 KB
/
Demo_Design_Pattern_Save_Theme.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import FreeSimpleGUI 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()