From 7bd8a02e802b416c6894275bf6287d0cbd5c21e7 Mon Sep 17 00:00:00 2001 From: PySimpleGUI Date: Thu, 3 Feb 2022 08:24:36 -0500 Subject: [PATCH] Added ability to change theme using the example Combo element --- DemoPrograms/Demo_All_Elements_Simple.py | 115 +++++++++++++---------- 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/DemoPrograms/Demo_All_Elements_Simple.py b/DemoPrograms/Demo_All_Elements_Simple.py index 280c1706..c2620c71 100644 --- a/DemoPrograms/Demo_All_Elements_Simple.py +++ b/DemoPrograms/Demo_All_Elements_Simple.py @@ -17,62 +17,77 @@ import PySimpleGUI as sg NAME_SIZE=23 -def name(name): - dots = NAME_SIZE-len(name)-2 - return sg.Text(name + ' ' + '•'*dots, size=(NAME_SIZE,1), justification='r',pad=(0,0), font='Courier 10') +def make_window(theme=None): + def name(name): + dots = NAME_SIZE-len(name)-2 + return sg.Text(name + ' ' + '•'*dots, size=(NAME_SIZE,1), justification='r',pad=(0,0), font='Courier 10') -treedata = sg.TreeData() + sg.theme(theme) -treedata.Insert("", '_A_', 'Tree Item 1', [1234], ) -treedata.Insert("", '_B_', 'B', []) -treedata.Insert("_A_", '_A1_', 'Sub Item 1', ['can', 'be', 'anything'], ) -treedata.Insert("", '_C_', 'C', [], ) + treedata = sg.TreeData() -layout_l = [[sg.Menu([['File', ['Exit']], ['Edit', ['Edit Me', ]]])], - [name('Text'), sg.Text('Text')], - [name('Input'), sg.Input(s=15)], - [name('Multiline'), sg.Multiline(s=(15,2))], - [name('Output'), sg.Output(s=(15,2))], - [name('Combo'), sg.Combo(['Combo',], s=(15,2))], - [name('OptionMenu'), sg.OptionMenu(['OptionMenu',],s=(15,2))], - [name('Checkbox'), sg.Checkbox('Checkbox')], - [name('Radio'), sg.Radio('Radio', 1)], - [name('Spin'), sg.Spin(['Spin',], s=(15,2))], - [name('Button'), sg.Button('Button')], - [name('ButtonMenu'), sg.ButtonMenu('ButtonMenu', sg.MENU_RIGHT_CLICK_EDITME_EXIT)], - [name('Slider'), sg.Slider((0,10), orientation='h', s=(10,15))], - [name('Listbox'), sg.Listbox(['Listbox', 'Listbox 2'], s=(15,2))], - [name('Image'), sg.Image(sg.EMOJI_BASE64_HAPPY_THUMBS_UP)], - [name('Graph'), sg.Graph((125, 50), (0,0), (125,50), k='-GRAPH-')] ] + treedata.Insert("", '_A_', 'Tree Item 1', [1234], ) + treedata.Insert("", '_B_', 'B', []) + treedata.Insert("_A_", '_A1_', 'Sub Item 1', ['can', 'be', 'anything'], ) + treedata.Insert("", '_C_', 'C', [], ) -layout_r = [[name('Canvas'), sg.Canvas(background_color=sg.theme_button_color()[1], size=(125,50))], - [name('ProgressBar'), sg.ProgressBar(100, orientation='h', s=(10,20), k='-PBAR-')], - [name('Table'), sg.Table([[1,2,3], [4,5,6]], ['Col 1','Col 2','Col 3'], num_rows=2)], - [name('Tree'), sg.Tree(treedata, ['Heading',], num_rows=3)], - [name('Horizontal Separator'), sg.HSep()], - [name('Vertical Separator'), sg.VSep()], - [name('Frame'), sg.Frame('Frame', [[sg.T(s=15)]])], - [name('Column'), sg.Column([[sg.T(s=15)]])], - [name('Tab, TabGroup'), sg.TabGroup([[sg.Tab('Tab1',[[sg.T(s=(15,2))]]), sg.Tab('Tab2', [[]])]])], - [name('Pane'), sg.Pane([sg.Col([[sg.T('Pane 1')]]), sg.Col([[sg.T('Pane 2')]])])], - [name('Push'), sg.Push(), sg.T('Pushed over')], - [name('VPush'), sg.VPush()], - [name('Sizer'), sg.Sizer(1,1)], - [name('StatusBar'), sg.StatusBar('StatusBar')], - [name('Sizegrip'), sg.Sizegrip()] ] + layout_l = [[sg.Menu([['File', ['Exit']], ['Edit', ['Edit Me', ]]])], + [name('Text'), sg.Text('Text')], + [name('Input'), sg.Input(s=15)], + [name('Multiline'), sg.Multiline(s=(15,2))], + [name('Output'), sg.Output(s=(15,2))], + [name('Combo'), sg.Combo(sg.theme_list(), default_value=sg.theme(), s=(15,22), enable_events=True, k='-COMBO-')], + [name('OptionMenu'), sg.OptionMenu(['OptionMenu',],s=(15,2))], + [name('Checkbox'), sg.Checkbox('Checkbox')], + [name('Radio'), sg.Radio('Radio', 1)], + [name('Spin'), sg.Spin(['Spin',], s=(15,2))], + [name('Button'), sg.Button('Button')], + [name('ButtonMenu'), sg.ButtonMenu('ButtonMenu', sg.MENU_RIGHT_CLICK_EDITME_EXIT)], + [name('Slider'), sg.Slider((0,10), orientation='h', s=(10,15))], + [name('Listbox'), sg.Listbox(['Listbox', 'Listbox 2'], s=(15,2))], + [name('Image'), sg.Image(sg.EMOJI_BASE64_HAPPY_THUMBS_UP)], + [name('Graph'), sg.Graph((125, 50), (0,0), (125,50), k='-GRAPH-')] ] -layout = [[sg.Col(layout_l), sg.Col(layout_r)]] -window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_EXIT) + layout_r = [[name('Canvas'), sg.Canvas(background_color=sg.theme_button_color()[1], size=(125,50))], + [name('ProgressBar'), sg.ProgressBar(100, orientation='h', s=(10,20), k='-PBAR-')], + [name('Table'), sg.Table([[1,2,3], [4,5,6]], ['Col 1','Col 2','Col 3'], num_rows=2)], + [name('Tree'), sg.Tree(treedata, ['Heading',], num_rows=3)], + [name('Horizontal Separator'), sg.HSep()], + [name('Vertical Separator'), sg.VSep()], + [name('Frame'), sg.Frame('Frame', [[sg.T(s=15)]])], + [name('Column'), sg.Column([[sg.T(s=15)]])], + [name('Tab, TabGroup'), sg.TabGroup([[sg.Tab('Tab1',[[sg.T(s=(15,2))]]), sg.Tab('Tab2', [[]])]])], + [name('Pane'), sg.Pane([sg.Col([[sg.T('Pane 1')]]), sg.Col([[sg.T('Pane 2')]])])], + [name('Push'), sg.Push(), sg.T('Pushed over')], + [name('VPush'), sg.VPush()], + [name('Sizer'), sg.Sizer(1,1)], + [name('StatusBar'), sg.StatusBar('StatusBar')], + [name('Sizegrip'), sg.Sizegrip()] ] -window['-PBAR-'].update(30) -window['-GRAPH-'].draw_image(data=sg.EMOJI_BASE64_HAPPY_JOY, location=(0,50)) + layout = [[sg.T('PySimpleGUI Elements - Use Combo to Change Themes', font='_ 18', justification='c', expand_x=True)], + [sg.Col(layout_l), sg.Col(layout_r)]] + window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_EXIT) -while True: - event, values = window.read() - if event == sg.WIN_CLOSED or event == 'Exit': - break - if event == 'Edit Me': - sg.execute_editor(__file__) -window.close() + window['-PBAR-'].update(30) + window['-GRAPH-'].draw_image(data=sg.EMOJI_BASE64_HAPPY_JOY, location=(0,50)) + + return window + +def main(): + window = make_window() + + while True: + event, values = window.read() + if event == sg.WIN_CLOSED or event == 'Exit': + break + if event == 'Edit Me': + sg.execute_editor(__file__) + if values['-COMBO-'] != sg.theme(): + sg.theme(values['-COMBO-']) + window.close() + window = make_window() + window.close() +if __name__ == '__main__': + main() \ No newline at end of file