diff --git a/DemoPrograms/Demo_All_Elements.py b/DemoPrograms/Demo_All_Elements.py index a85328e0..c9e8885b 100644 --- a/DemoPrograms/Demo_All_Elements.py +++ b/DemoPrograms/Demo_All_Elements.py @@ -20,13 +20,16 @@ def make_window(theme): sg.theme(theme) menu_def = [['&Application', ['E&xit']], ['&Help', ['&About']] ] - right_click_menu_def = [[], ['Nothing','More Nothing','Exit']] + right_click_menu_def = [[], ['Edit Me', 'Versions', 'Nothing','More Nothing','Exit']] + graph_right_click_menu_def = [[], ['Erase','Draw Line', 'Draw',['Circle', 'Rectangle', 'Image'], 'Exit']] # Table Data data = [["John", 10], ["Jen", 5]] headings = ["Name", "Score"] - input_layout = [[sg.Menu(menu_def, key='-MENU-')], + input_layout = [ + + # [sg.Menu(menu_def, key='-MENU-')], [sg.Text('Anything that requires user-input is in this tab!')], [sg.Input(key='-INPUT-')], [sg.Slider(orientation='h', key='-SKIDER-'), @@ -36,17 +39,22 @@ def make_window(theme): [sg.Combo(values=('Combo 1', 'Combo 2', 'Combo 3'), default_value='Combo 1', readonly=True, k='-COMBO-'), sg.OptionMenu(values=('Option 1', 'Option 2', 'Option 3'), k='-OPTION MENU-'),], [sg.Spin([i for i in range(1,11)], initial_value=10, k='-SPIN-'), sg.Text('Spin')], - [sg.Multiline('Demo of a Multi-Line Text Element!\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nYou get the point.', size=(45,5), k='-MLINE-')], + [sg.Multiline('Demo of a Multi-Line Text Element!\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nYou get the point.', size=(45,5), expand_x=True, expand_y=True, k='-MLINE-')], [sg.Button('Button'), sg.Button('Popup'), sg.Button(image_data=sg.DEFAULT_BASE64_ICON, key='-LOGO-')]] asthetic_layout = [[sg.T('Anything that you would use for asthetics is in this tab!')], [sg.Image(data=sg.DEFAULT_BASE64_ICON, k='-IMAGE-')], - [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='-PROGRESS BAR-'), sg.Button('Test Progress bar')]] + [sg.ProgressBar(100, orientation='h', size=(20, 20), key='-PROGRESS BAR-'), sg.Button('Test Progress bar')]] - logging_layout = [[sg.Text("Anything printed will display here!")], [sg.Output(size=(60,15), font='Courier 8')]] + logging_layout = [[sg.Text("Anything printed will display here!")], + [sg.Multiline(size=(60,15), font='Courier 8', expand_x=True, expand_y=True, write_only=True, + reroute_stdout=True, reroute_stderr=True, echo_stdout_stderr=True, autoscroll=True, auto_refresh=True)] + # [sg.Output(size=(60,15), font='Courier 8', expand_x=True, expand_y=True)] + ] graphing_layout = [[sg.Text("Anything you would use to graph will display here!")], - [sg.Graph((200,200), (0,0),(200,200),background_color="black", key='-GRAPH-', enable_events=True)], + [sg.Graph((200,200), (0,0),(200,200),background_color="black", key='-GRAPH-', enable_events=True, + right_click_menu=graph_right_click_menu_def)], [sg.T('Click anywhere on graph to draw a circle')], [sg.Table(values=data, headings=headings, max_col_width=25, background_color='black', @@ -58,9 +66,9 @@ def make_window(theme): key='-TABLE-', row_height=25)]] - specalty_layout = [[sg.Text("Any \"special\" elements will display here!")], - [sg.Button("Open Folder")], - [sg.Button("Open File")]] + popup_layout = [[sg.Text("Popup Testing")], + [sg.Button("Open Folder")], + [sg.Button("Open File")]] theme_layout = [[sg.Text("See how elements look under different themes by choosing a different theme here!")], [sg.Listbox(values = sg.theme_list(), @@ -69,16 +77,22 @@ def make_window(theme): enable_events = True)], [sg.Button("Set Theme")]] - layout = [[sg.Text('Demo Of (Almost) All Elements', size=(38, 1), justification='center', font=("Helvetica", 16), relief=sg.RELIEF_RIDGE, k='-TEXT HEADING-', enable_events=True)]] + layout = [ [sg.MenubarCustom(menu_def, key='-MENU-', font='Courier 15', tearoff=True)], + [sg.Text('Demo Of (Almost) All Elements', size=(38, 1), justification='center', font=("Helvetica", 16), relief=sg.RELIEF_RIDGE, k='-TEXT HEADING-', enable_events=True)]] layout +=[[sg.TabGroup([[ sg.Tab('Input Elements', input_layout), sg.Tab('Asthetic Elements', asthetic_layout), sg.Tab('Graphing', graphing_layout), - sg.Tab('Specialty', specalty_layout), + sg.Tab('Popups', popup_layout), sg.Tab('Theming', theme_layout), - sg.Tab('Output', logging_layout)]], key='-TAB GROUP-')]] - - return sg.Window('All Elements Demo', layout, right_click_menu=right_click_menu_def) + sg.Tab('Output', logging_layout)]], key='-TAB GROUP-', expand_x=True, expand_y=True), + ]] + layout[-1].append(sg.Sizegrip()) + window = sg.Window('All Elements Demo', layout, right_click_menu=right_click_menu_def, right_click_menu_tearoff=True, grab_anywhere=True, resizable=True, margins=(0,0), use_custom_titlebar=True, finalize=True, keep_on_top=True, + # scaling=2.0, + ) + window.set_min_size(window.size) + return window def main(): window = make_window(sg.theme()) @@ -102,17 +116,17 @@ def main(): 'Right click anywhere to see right click menu', 'Visit each of the tabs to see available elements', 'Output of event and values can be see in Output tab', - 'The event and values dictionary is printed after every event') + 'The event and values dictionary is printed after every event', keep_on_top=True) elif event == 'Popup': print("[LOG] Clicked Popup Button!") - sg.popup("You pressed a button!") + sg.popup("You pressed a button!", keep_on_top=True) print("[LOG] Dismissing Popup!") elif event == 'Test Progress bar': print("[LOG] Clicked Test Progress Bar!") progress_bar = window['-PROGRESS BAR-'] - for i in range(1000): + for i in range(100): print("[LOG] Updating progress bar by 1 step ("+str(i)+")") - progress_bar.UpdateBar(i + 1) + progress_bar.update(current_count=i + 1) print("[LOG] Progress bar complete!") elif event == "-GRAPH-": graph = window['-GRAPH-'] # type: sg.Graph @@ -120,13 +134,13 @@ def main(): print("[LOG] Circle drawn at: " + str(values['-GRAPH-'])) elif event == "Open Folder": print("[LOG] Clicked Open Folder!") - folder_or_file = sg.popup_get_folder('Choose your folder') - sg.popup("You chose: " + str(folder_or_file)) + folder_or_file = sg.popup_get_folder('Choose your folder', keep_on_top=True) + sg.popup("You chose: " + str(folder_or_file), keep_on_top=True) print("[LOG] User chose folder: " + str(folder_or_file)) elif event == "Open File": print("[LOG] Clicked Open File!") - folder_or_file = sg.popup_get_file('Choose your file') - sg.popup("You chose: " + str(folder_or_file)) + folder_or_file = sg.popup_get_file('Choose your file', keep_on_top=True) + sg.popup("You chose: " + str(folder_or_file), keep_on_top=True) print("[LOG] User chose file: " + str(folder_or_file)) elif event == "Set Theme": print("[LOG] Clicked Set Theme!") @@ -134,9 +148,17 @@ def main(): print("[LOG] User Chose Theme: " + str(theme_chosen)) window.close() window = make_window(theme_chosen) + elif event == 'Edit Me': + sg.execute_editor(__file__) + elif event == 'Versions': + sg.popup(sg.get_versions(), keep_on_top=True) window.close() exit(0) if __name__ == '__main__': + sg.theme('black') + sg.theme('dark red') + sg.theme('dark green 7') + # sg.theme('DefaultNoMoreNagging') main() \ No newline at end of file