From fefd3949cf1ab56bd03d3caee7c5db8b1bf5e4b9 Mon Sep 17 00:00:00 2001 From: PySimpleGUI Date: Sat, 4 Jun 2022 13:18:09 -0400 Subject: [PATCH] Added settings to the right click menu in addition to link in the window. Made Version Window location the same as the program's window. Added exception handling around main event loop that utilizes the Debug Print as a reporting mechanism since there is no console for these applications. Uses the new wait parameter for the debug print --- DemoPrograms/Demo_Desktop_Widget_Weather.py | 44 +++++++++++---------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/DemoPrograms/Demo_Desktop_Widget_Weather.py b/DemoPrograms/Demo_Desktop_Widget_Weather.py index 3d0dd389..11cdb41e 100644 --- a/DemoPrograms/Demo_Desktop_Widget_Weather.py +++ b/DemoPrograms/Demo_Desktop_Widget_Weather.py @@ -226,7 +226,7 @@ def create_window(win_location): window = sg.Window(layout=layout, title='Weather Widget', margins=(0, 0), finalize=True, location=win_location, element_justification='center', keep_on_top=True, no_titlebar=True, grab_anywhere=True, alpha_channel=ALPHA, - right_click_menu=[[''], ['Edit Me', 'Versions', 'Exit',]], enable_close_attempted_event=True) + right_click_menu=[[''], ['Edit Me', 'Versions', 'Settings', 'Exit',]], enable_close_attempted_event=True) for col in ['COL1', 'COL2', 'TopCOL', 'BotCOL', '-QUIT-']: window[col].expand(expand_y=True, expand_x=True) @@ -278,27 +278,29 @@ def main(refresh_rate, win_location): exit() window = create_window(win_location) + try: + while True: # Event Loop + event, values = window.read(timeout=refresh_in_milliseconds) + if event in (None, '-QUIT-', 'Exit', sg.WIN_CLOSE_ATTEMPTED_EVENT): + sg.user_settings_set_entry('-win location-', window.current_location()) # The line of code to save the position before exiting + break + if event in ('-CHANGE-', 'Settings'): + x, y = window.current_location() + settings = change_settings(settings, (x + 200, y+50)) + elif event == '-REFRESH-': + sg.popup_quick_message('Refreshing...', keep_on_top=True, background_color='red', text_color='white', + auto_close_duration=3, non_blocking=False, location=(window.current_location()[0]+window.size[0]//2-30, window.current_location()[1]+window.size[1]//2-10)) + elif event == 'Edit Me': + sg.execute_editor(__file__) + elif event == 'Versions': + sg.popup_scrolled(__file__, sg.get_versions(), keep_on_top=True, location=window.current_location()) + elif event != sg.TIMEOUT_KEY: + sg.Print('Unknown event received\nEvent & values:\n', event, values, location=win_location, keep_on_top=True) - while True: # Event Loop - event, values = window.read(timeout=refresh_in_milliseconds) - if event in (None, '-QUIT-', 'Exit', sg.WIN_CLOSE_ATTEMPTED_EVENT): - sg.user_settings_set_entry('-win location-', window.current_location()) # The line of code to save the position before exiting - break - if event == '-CHANGE-': - x, y = window.current_location() - settings = change_settings(settings, (x + 200, y+50)) - elif event == '-REFRESH-': - sg.popup_quick_message('Refreshing...', keep_on_top=True, background_color='red', text_color='white', - auto_close_duration=3, non_blocking=False, location=(window.current_location()[0]+window.size[0]//2-30, window.current_location()[1]+window.size[1]//2-10)) - elif event == 'Edit Me': - sg.execute_editor(__file__) - elif event == 'Versions': - sg.main_get_debug_data() - elif event != sg.TIMEOUT_KEY: - sg.Print('Unknown event received\nEvent & values:\n', event, values, location=win_location) - - update_weather() - update_metrics(window) + update_weather() + update_metrics(window) + except Exception as e: + sg.Print('Exception in Weather Widget event loop', sg.__file__, e, keep_on_top=True, wait=True, location=win_location) window.close()