74 lines
3.0 KiB
Python
74 lines
3.0 KiB
Python
import PySimpleGUI as sg
|
|
|
|
"""
|
|
Demo of a Better File / Folder Input Window
|
|
|
|
This construct is very common in PySimpleGUI.
|
|
[sg.InputText(size=(50,1), key='-FILENAME-'), sg.FileBrowse()],
|
|
|
|
The new user settings APIs can significantly improve the experience. Now instead of being
|
|
shown a blank input element, the user is shown their previous entry and a history of their
|
|
prior entries to choose from.
|
|
|
|
Two new capabilities are presented in this demo
|
|
1. Recalling the last entry
|
|
2. Recalling a history of all of the previous entries as a Combo instead of Input Element
|
|
|
|
The previous operations you're used to remain. You can paste a filename/full path into the combo.
|
|
You can also use the browse button as before.
|
|
|
|
But, you also get the 2 history features - last entry used, list of previous choices.
|
|
|
|
If your window is not a 1-shot, add an event loop instead of a read with close paramter
|
|
|
|
Copyright 2020 PySimpleGUI.org
|
|
"""
|
|
|
|
# ------------------- The Old Way -------------------
|
|
import PySimpleGUI as sg
|
|
|
|
layout = [[sg.Text('My Window')],
|
|
[sg.InputText(size=(50, 1), key='-FILENAME-'), sg.FileBrowse()],
|
|
[sg.Button('Go'), sg.Button('Exit')]]
|
|
|
|
event1, values1 = sg.Window('Normal Filename', layout).read(close=True)
|
|
|
|
# ------------------- The New Way with history -------------------
|
|
import PySimpleGUI as sg
|
|
|
|
layout = [[sg.Text('My Window')],
|
|
[sg.Combo(sg.user_settings_get_entry('-filenames-', []), default_value=sg.user_settings_get_entry('-last filename-', ''), size=(50, 1), key='-FILENAME-'),
|
|
sg.FileBrowse()],
|
|
[sg.Button('Go'), sg.Button('Exit')]]
|
|
|
|
event, values = sg.Window('Filename with History', layout).read(close=True)
|
|
|
|
if event == 'Go':
|
|
sg.user_settings_set_entry('-filenames-', list(set(sg.user_settings_get_entry('-filenames-', []) + [values['-FILENAME-'], ])))
|
|
sg.user_settings_set_entry('-last filename-', values['-FILENAME-'])
|
|
|
|
|
|
# ------------------- The New Way with history and clear -------------------
|
|
import PySimpleGUI as sg
|
|
|
|
layout = [[sg.Text('My Window')],
|
|
[sg.Combo(sg.user_settings_get_entry('-filenames-', []), default_value=sg.user_settings_get_entry('-last filename-', ''), size=(50, 1), key='-FILENAME-'),
|
|
sg.FileBrowse()],
|
|
[sg.Button('Go'), sg.B('Clear'), sg.Button('Exit')]]
|
|
|
|
window = sg.Window('Filename History Clearable', layout)
|
|
|
|
while True:
|
|
event, values = window.read()
|
|
|
|
if event == sg.WIN_CLOSED or event == 'Exit':
|
|
break
|
|
if event == 'Go':
|
|
sg.user_settings_set_entry('-filenames-', list(set(sg.user_settings_get_entry('-filenames-', []) + [values['-FILENAME-'], ])))
|
|
sg.user_settings_set_entry('-last filename-', values['-FILENAME-'])
|
|
window['-FILENAME-'].update(values=list(set(sg.user_settings_get_entry('-filenames-', []))))
|
|
elif event == 'Clear':
|
|
sg.user_settings_set_entry('-filenames-', [])
|
|
sg.user_settings_set_entry('-last filename-', '')
|
|
window['-FILENAME-'].update(values=[], value='')
|