diff --git a/DemoPrograms/Demo_User_Setting_Save_Window_Inputs.py b/DemoPrograms/Demo_User_Setting_Save_Window_Inputs.py new file mode 100644 index 00000000..1c9de98a --- /dev/null +++ b/DemoPrograms/Demo_User_Setting_Save_Window_Inputs.py @@ -0,0 +1,57 @@ +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()