Turned off raising exception for bad keys by default and make it changeable through set_options. The code is in the popup error now
This commit is contained in:
parent
76cfae8351
commit
78b9239e12
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
version = __version__ = "4.26.0.7 Unreleased\nNew Sponsor button, highly experimental read_all_windows(), search option for theme previewer, theme button in main, progress bar color can use new 'on' format, combined ProgressBar.update_bar with ProgressBar.update so now only update is needed, theme previewer restore previous theme, raise KeyError when find_element or window[] hits a bad key (unless find_element has silent error set), traceback shown on key errors"
|
version = __version__ = "4.26.0.8 Unreleased\nNew Sponsor button, highly experimental read_all_windows(), search option for theme previewer, theme button in main, progress bar color can use new 'on' format, combined ProgressBar.update_bar with ProgressBar.update so now only update is needed, theme previewer restore previous theme, raise KeyError when find_element or window[] hits a bad key (unless find_element has silent error set), better traceback shown on key errors"
|
||||||
|
|
||||||
port = 'PySimpleGUI'
|
port = 'PySimpleGUI'
|
||||||
|
|
||||||
|
@ -407,6 +407,7 @@ MENU_KEY_SEPARATOR = '::'
|
||||||
ENABLE_TK_WINDOWS = False
|
ENABLE_TK_WINDOWS = False
|
||||||
|
|
||||||
SUPPRESS_ERROR_POPUPS = False
|
SUPPRESS_ERROR_POPUPS = False
|
||||||
|
SUPPRESS_RAISE_KEY_ERRORS = True
|
||||||
|
|
||||||
ENABLE_TREEVIEW_869_PATCH = True
|
ENABLE_TREEVIEW_869_PATCH = True
|
||||||
OLD_TABLE_TREE_SELECTED_ROW_COLORS = ('#FFFFFF', '#4A6984')
|
OLD_TABLE_TREE_SELECTED_ROW_COLORS = ('#FFFFFF', '#4A6984')
|
||||||
|
@ -6794,14 +6795,7 @@ class ErrorElement(Element):
|
||||||
:return: returns 'self' so call can be chained
|
:return: returns 'self' so call can be chained
|
||||||
:rtype: (ErrorElement)
|
:rtype: (ErrorElement)
|
||||||
"""
|
"""
|
||||||
if not silent_on_error and not SUPPRESS_ERROR_POPUPS:
|
print('** Your update is being ignored because you supplied a bad key earlier **')
|
||||||
PopupError('Key error in Update',
|
|
||||||
'You need to stop this madness and check your spelling',
|
|
||||||
'Bad key = {}'.format(self.Key),
|
|
||||||
'Your bad line of code may resemble this:',
|
|
||||||
'window.FindElement("{}")'.format(self.Key),
|
|
||||||
'or window["{}"]'.format(self.Key), keep_on_top=True, image=_random_error_icon()
|
|
||||||
)
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def Get(self):
|
def Get(self):
|
||||||
|
@ -7641,14 +7635,23 @@ class Window:
|
||||||
if not silent_on_error:
|
if not silent_on_error:
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"*** WARNING = FindElement did not find the key. Please check your key's spelling if it's a string. key = {} ***".format(key), UserWarning)
|
"*** WARNING = FindElement did not find the key. Please check your key's spelling if it's a string. key = {} ***".format(key), UserWarning)
|
||||||
trace_details = traceback.format_stack()[0]
|
trace_details = traceback.format_stack()
|
||||||
|
error_message = ''
|
||||||
|
for line in trace_details:
|
||||||
|
if key in line:
|
||||||
|
error_message = line
|
||||||
|
break
|
||||||
|
error_message = '\n'.join(error_message.split(','))
|
||||||
if not SUPPRESS_ERROR_POPUPS:
|
if not SUPPRESS_ERROR_POPUPS:
|
||||||
popup_error('Key error in locating your element',
|
popup_error('Key error in locating your element',
|
||||||
'Bad key = {}\n'.format(key),
|
'Bad key = {}\n'.format(key),
|
||||||
trace_details,
|
error_message,
|
||||||
line_width=len(trace_details),
|
line_width=100,
|
||||||
keep_on_top=True, image=_random_error_icon())
|
keep_on_top=True, image=_random_error_icon())
|
||||||
raise KeyError(key)
|
if not SUPPRESS_RAISE_KEY_ERRORS:
|
||||||
|
raise KeyError(key)
|
||||||
|
else:
|
||||||
|
element = ErrorElement(key=key)
|
||||||
else:
|
else:
|
||||||
element = ErrorElement(key=key)
|
element = ErrorElement(key=key)
|
||||||
return element
|
return element
|
||||||
|
@ -8460,8 +8463,10 @@ class Window:
|
||||||
return self.FindElement(key)
|
return self.FindElement(key)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
warnings.warn('The key you passed in is no good. Key = {}*'.format(key))
|
warnings.warn('The key you passed in is no good. Key = {}*'.format(key))
|
||||||
|
if not SUPPRESS_RAISE_KEY_ERRORS:
|
||||||
|
raise KeyError(key)
|
||||||
|
return None
|
||||||
|
|
||||||
raise KeyError(key)
|
|
||||||
|
|
||||||
def __call__(self, *args, **kwargs):
|
def __call__(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
@ -12909,7 +12914,7 @@ def SetOptions(icon=None, button_color=None, element_size=(None, None), button_e
|
||||||
text_justification=None, background_color=None, element_background_color=None,
|
text_justification=None, background_color=None, element_background_color=None,
|
||||||
text_element_background_color=None, input_elements_background_color=None, input_text_color=None,
|
text_element_background_color=None, input_elements_background_color=None, input_text_color=None,
|
||||||
scrollbar_color=None, text_color=None, element_text_color=None, debug_win_size=(None, None),
|
scrollbar_color=None, text_color=None, element_text_color=None, debug_win_size=(None, None),
|
||||||
window_location=(None, None), error_button_color=(None, None), tooltip_time=None, tooltip_font=None, use_ttk_buttons=None, ttk_theme=None, suppress_error_popups=None, enable_treeview_869_patch=None):
|
window_location=(None, None), error_button_color=(None, None), tooltip_time=None, tooltip_font=None, use_ttk_buttons=None, ttk_theme=None, suppress_error_popups=None, suppress_raise_key_errors=None, enable_treeview_869_patch=None):
|
||||||
"""
|
"""
|
||||||
:param icon: filename or base64 string to be used for the window's icon
|
:param icon: filename or base64 string to be used for the window's icon
|
||||||
:type icon: Union[bytes, str]
|
:type icon: Union[bytes, str]
|
||||||
|
@ -12986,6 +12991,10 @@ def SetOptions(icon=None, button_color=None, element_size=(None, None), button_e
|
||||||
:type ttk_theme: (str)
|
:type ttk_theme: (str)
|
||||||
:param suppress_error_popups: If True then error popups will not be shown if generated internally to PySimpleGUI
|
:param suppress_error_popups: If True then error popups will not be shown if generated internally to PySimpleGUI
|
||||||
:type suppress_error_popups: (bool)
|
:type suppress_error_popups: (bool)
|
||||||
|
:param suppress_raise_key_errors: If True then key errors won't be raised (you'll still get popup error)
|
||||||
|
:type suppress_raise_key_errors: (bool)
|
||||||
|
:param enable_treeview_869_patch: If True, then will use the treeview color patch for tk 8.6.9
|
||||||
|
:type enable_treeview_869_patch: (bool)
|
||||||
:return: None
|
:return: None
|
||||||
:rtype: None
|
:rtype: None
|
||||||
"""
|
"""
|
||||||
|
@ -13026,6 +13035,7 @@ def SetOptions(icon=None, button_color=None, element_size=(None, None), button_e
|
||||||
global USE_TTK_BUTTONS
|
global USE_TTK_BUTTONS
|
||||||
global TOOLTIP_FONT
|
global TOOLTIP_FONT
|
||||||
global SUPPRESS_ERROR_POPUPS
|
global SUPPRESS_ERROR_POPUPS
|
||||||
|
global SUPPRESS_RAISE_KEY_ERRORS
|
||||||
global ENABLE_TREEVIEW_869_PATCH
|
global ENABLE_TREEVIEW_869_PATCH
|
||||||
# global _my_windows
|
# global _my_windows
|
||||||
|
|
||||||
|
@ -13142,6 +13152,9 @@ def SetOptions(icon=None, button_color=None, element_size=(None, None), button_e
|
||||||
if suppress_error_popups is not None:
|
if suppress_error_popups is not None:
|
||||||
SUPPRESS_ERROR_POPUPS = suppress_error_popups
|
SUPPRESS_ERROR_POPUPS = suppress_error_popups
|
||||||
|
|
||||||
|
if suppress_raise_key_errors is not None:
|
||||||
|
SUPPRESS_RAISE_KEY_ERRORS = suppress_raise_key_errors
|
||||||
|
|
||||||
if enable_treeview_869_patch is not None:
|
if enable_treeview_869_patch is not None:
|
||||||
ENABLE_TREEVIEW_869_PATCH = enable_treeview_869_patch
|
ENABLE_TREEVIEW_869_PATCH = enable_treeview_869_patch
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue