New Demo Program - create custom themes and save in user settings file

This commit is contained in:
PySimpleGUI 2022-04-15 07:52:39 -04:00
parent c9cc588a23
commit 4bba64d34f
1 changed files with 79 additions and 0 deletions

View File

@ -0,0 +1,79 @@
import PySimpleGUI as sg
"""
Demo of using User Settings to create and store your own personal PySimpleGUI themes
There are 2 operations
1. Initialize your settings file. You would normally only do this once and perhaps
write a simple program to administer it or you can also edit the JSON file directly
2. Use your settings file. Add the code to the top of all of your applications that you want
to have access to your selection of custom themes
Copyright 2022 PySimpleGUI.org
"""
def init_your_settings():
DarkGrey20 = {'BACKGROUND': '#19232D',
'TEXT': '#ffffff',
'INPUT': '#32414B',
'TEXT_INPUT': '#ffffff',
'SCROLL': '#505F69',
'BUTTON': ('#ffffff', '#32414B'),
'PROGRESS': ('#505F69', '#32414B'),
'BORDER': 1, 'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0,
}
DarkGrey21 = {'BACKGROUND': '#121212',
'TEXT': '#dddddd',
'INPUT': '#1e1e1e',
'TEXT_INPUT': '#dbdcd9',
'SCROLL': '#272727',
'BUTTON': ('#69b1ef', '#2e2e2e'),
'PROGRESS': ('#69b1ef', '#2e2e2e'),
'BORDER': 1, 'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0,
}
# Set up my app settings file... start with an empty one to be sure
sg.user_settings_delete_filename('my_awesome_apps')
sg.user_settings_filename('my_awesome_apps')
# Add the theme dictionaries
sg.user_settings_set_entry('Dark Gray 20', DarkGrey20)
sg.user_settings_set_entry('Dark Gray 21', DarkGrey21)
sg.user_settings_set_entry('-theme list-', ('Dark Gray 20', 'Dark Gray 21'))
sg.popup_quick_message('Your settings file has been created and is ready to be used', background_color='#1c1e23', text_color='white', keep_on_top=True, font='_ 30')
def use_your_settings():
sg.user_settings_filename('my_awesome_apps')
default_theme_name = sg.user_settings_get_entry('-theme default-', None)
# Only need this section is you want this app to allow user to select the default theme
# Could also auto-choose the first theme in the list for them
if default_theme_name is None:
default_theme_list = sg.user_settings_get_entry('-theme list-', None)
event, values = sg.Window('Choose a theme', [[sg.T('Your settings do not have a default theme chosen so please choose one')],[sg.Combo(default_theme_list, key='-THEME-', readonly=True, enable_events=True)]]).read(
close=True)
if event == sg.WIN_CLOSED:
sg.popup_error('No theme chosen so exiting')
exit()
default_theme_name = values[event]
sg.user_settings_set_entry('-theme default-', default_theme_name)
my_theme = sg.user_settings_get_entry(default_theme_name, None)
sg.theme_add_new(default_theme_name, my_theme)
# Switch your theme to use the newly added one
sg.theme(default_theme_name)
# Test out the theme
sg.popup_get_text(f'My theme is {default_theme_name} looks like this.', image=sg.EMOJI_BASE64_HAPPY_THUMBS_UP)
if __name__ == '__main__':
operations = ('Initialize your settings (must do first)', 'Use your settings')
event, values = sg.Window('Choose an operation', [[sg.T('Choose an operation to perform')],[sg.Combo(operations, key='-OPERATION-', readonly=True, enable_events=True)]]).read(close=True)
if event == sg.WIN_CLOSED:
sg.popup_error('No operation chosen so exiting')
elif values[event] == operations[0]:
init_your_settings()
elif values[event] == operations[1]:
use_your_settings()