58 lines
2.3 KiB
Python
58 lines
2.3 KiB
Python
|
import PySimpleGUI as sg
|
||
|
|
||
|
"""
|
||
|
Demo - User Setting API to save and load a window's contents
|
||
|
|
||
|
The PySimpleGUI "User Settings API" is a simple interface to JSON and Config Files.
|
||
|
If you're thinking of storying information in a JSON file, consider using the PySimpleGUI
|
||
|
User Settings API calls. They make JSON files act like dictionaries. There's no need
|
||
|
to load nor save as that's done for you.
|
||
|
|
||
|
There are 2 interfaces to the User Settings API.
|
||
|
1. Function calls - sg.user_settings
|
||
|
2. UserSettings Object - Uses a simple class interface
|
||
|
|
||
|
Note that using the Object/class interface does not require you to write a class. If you're using
|
||
|
PySimpleGUI, you are already using many different objects. The Elements & Window are objects.
|
||
|
|
||
|
In this demo, a UserSetting object is used to save the values from Input elements into a JSON file.
|
||
|
You can also re-loda the values from the JSON into your window.
|
||
|
|
||
|
Copyright 2022 PySimpleGUI
|
||
|
"""
|
||
|
|
||
|
# Create a UserSettings object. The JSON file will be saved in the same folder as this .py file
|
||
|
window_contents = sg.UserSettings(path='.', filename='mysettings.json')
|
||
|
|
||
|
def main():
|
||
|
layout = [ [sg.Text('My Window')],
|
||
|
[sg.Input(key='-IN1-')],
|
||
|
[sg.Input(key='-IN2-')],
|
||
|
[sg.Input(key='-IN3-')],
|
||
|
[sg.Input(key='-IN4-')],
|
||
|
[sg.Input(key='-IN5-')],
|
||
|
[sg.Button('Save'), sg.Button('Load'), sg.Button('Exit')] ]
|
||
|
|
||
|
window = sg.Window('Save / Load Inputs Using User Settings API', layout)
|
||
|
|
||
|
while True: # Event Loop
|
||
|
event, values = window.read()
|
||
|
print(event, values)
|
||
|
if event == sg.WIN_CLOSED or event == 'Exit':
|
||
|
break
|
||
|
|
||
|
# To SAVE the values, loop through all elements in the values dictionary and save their values
|
||
|
if event == 'Save':
|
||
|
for key in values:
|
||
|
window_contents[key] = values[key]
|
||
|
# To LOAD values from a settings file into a window, loop through values dictionary and update each element
|
||
|
if event == 'Load':
|
||
|
for key in values:
|
||
|
saved_value = window_contents[key]
|
||
|
window[key].update(saved_value)
|
||
|
|
||
|
window.close()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|