Multiline scrollbar renamed to no_scrollbar to match the Listbox element

This commit is contained in:
PySimpleGUI 2021-03-16 15:37:00 -04:00
parent e44943ccee
commit 160ce5d1ff
2 changed files with 39 additions and 13 deletions

View File

@ -35,8 +35,8 @@ def main():
col_widths=[40], num_rows=30, enable_events=True), sg.VerticalSeparator(pad=((5, 5), 0))]] col_widths=[40], num_rows=30, enable_events=True), sg.VerticalSeparator(pad=((5, 5), 0))]]
try: try:
mline_input = sg.Multiline('PySimpleGUI', size=(40,3), key='-TEXT-TO-SHOW-', scrollbar=False, enable_events=True, focus=True) mline_input = sg.Multiline('PySimpleGUI', size=(40,3), key='-TEXT-TO-SHOW-', no_scrollbar=True, enable_events=True, focus=True)
except: except Exception as e:
mline_input = sg.Multiline('PySimpleGUI', size=(40,3), key='-TEXT-TO-SHOW-', enable_events=True, focus=True) mline_input = sg.Multiline('PySimpleGUI', size=(40,3), key='-TEXT-TO-SHOW-', enable_events=True, focus=True)
column_right = [[sg.Text("Font Name:", size=(10,1)), sg.Input(selected_font, size=(12,1), key='-FONT-NAME-')], column_right = [[sg.Text("Font Name:", size=(10,1)), sg.Input(selected_font, size=(12,1), key='-FONT-NAME-')],

View File

@ -1,5 +1,5 @@
#!/usr/bin/python3 #!/usr/bin/python3
version = __version__ = "4.37.0 Released 15-Mar-2021" version = __version__ = "4.37.0.1 Unreleased\nMultiline scrollbar parameter renamed to no_scrollbar to match the listbox (sorry! but at least I caught it quickly), more debugger work"
__version__ = version.split()[0] # For PEP 396 and PEP 345 __version__ = version.split()[0] # For PEP 396 and PEP 345
@ -2473,7 +2473,7 @@ class Multiline(Element):
def __init__(self, default_text='', enter_submits=False, disabled=False, autoscroll=False, border_width=None, def __init__(self, default_text='', enter_submits=False, disabled=False, autoscroll=False, border_width=None,
size=(None, None), auto_size_text=None, background_color=None, text_color=None, change_submits=False, size=(None, None), auto_size_text=None, background_color=None, text_color=None, change_submits=False,
enable_events=False, do_not_clear=True, key=None, k=None, write_only=False, auto_refresh=False, reroute_stdout=False, reroute_stderr=False, reroute_cprint=False, echo_stdout_stderr=False, focus=False, font=None, pad=None, tooltip=None, justification=None, scrollbar=True, enable_events=False, do_not_clear=True, key=None, k=None, write_only=False, auto_refresh=False, reroute_stdout=False, reroute_stderr=False, reroute_cprint=False, echo_stdout_stderr=False, focus=False, font=None, pad=None, tooltip=None, justification=None, no_scrollbar=False,
right_click_menu=None, visible=True, metadata=None): right_click_menu=None, visible=True, metadata=None):
""" """
:param default_text: Initial text to show :param default_text: Initial text to show
@ -2526,8 +2526,8 @@ class Multiline(Element):
:type tooltip: (str) :type tooltip: (str)
:param justification: text justification. left, right, center. Can use single characters l, r, c. :param justification: text justification. left, right, center. Can use single characters l, r, c.
:type justification: (str) :type justification: (str)
:param scrollbar: If True then a scrollbar will be shown (the default) :param no_scrollbar: If False then a scrollbar will be shown (the default)
:type scrollbar: (bool) :type no_scrollbar: (bool)
:param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format.
:type right_click_menu: List[List[ List[str] | str ]] :type right_click_menu: List[List[ List[str] | str ]]
:param visible: set visibility state of the element :param visible: set visibility state of the element
@ -2563,7 +2563,7 @@ class Multiline(Element):
self.reroute_stdout_to_here() self.reroute_stdout_to_here()
if reroute_stderr: if reroute_stderr:
self.reroute_stderr_to_here() self.reroute_stderr_to_here()
self.scrollbar = scrollbar self.no_scrollbar = no_scrollbar
super().__init__(ELEM_TYPE_INPUT_MULTILINE, size=size, auto_size_text=auto_size_text, background_color=bg, super().__init__(ELEM_TYPE_INPUT_MULTILINE, size=size, auto_size_text=auto_size_text, background_color=bg,
text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, metadata=metadata) text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, metadata=metadata)
@ -12700,10 +12700,10 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form):
element = element # type: Multiline element = element # type: Multiline
width, height = element_size width, height = element_size
bd = element.BorderWidth bd = element.BorderWidth
if element.scrollbar: if element.no_scrollbar:
element.TKText = element.Widget = tk.scrolledtext.ScrolledText(tk_row_frame, width=width, height=height, wrap='word', bd=bd, font=font, relief=RELIEF_SUNKEN)
else:
element.TKText = element.Widget = tk.Text(tk_row_frame, width=width, height=height, wrap='word', bd=bd, font=font, relief=RELIEF_SUNKEN) element.TKText = element.Widget = tk.Text(tk_row_frame, width=width, height=height, wrap='word', bd=bd, font=font, relief=RELIEF_SUNKEN)
else:
element.TKText = element.Widget = tk.scrolledtext.ScrolledText(tk_row_frame, width=width, height=height, wrap='word', bd=bd, font=font, relief=RELIEF_SUNKEN)
if element.DefaultText: if element.DefaultText:
element.TKText.insert(1.0, element.DefaultText) # set the default text element.TKText.insert(1.0, element.DefaultText) # set the default text
element.TKText.config(highlightthickness=0) element.TKText.config(highlightthickness=0)
@ -12741,7 +12741,7 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form):
element.TKText.focus_set() element.TKText.focus_set()
if text_color is not None and text_color != COLOR_SYSTEM_DEFAULT: if text_color is not None and text_color != COLOR_SYSTEM_DEFAULT:
element.TKText.configure(fg=text_color) element.TKText.configure(fg=text_color)
if element.Disabled == True: if element.Disabled is True:
element.TKText['state'] = 'disabled' element.TKText['state'] = 'disabled'
if element.Tooltip is not None: if element.Tooltip is not None:
element.TooltipObject = ToolTip(element.TKText, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME) element.TooltipObject = ToolTip(element.TKText, text=element.Tooltip, timeout=DEFAULT_TOOLTIP_TIME)
@ -18086,10 +18086,11 @@ class _Debugger():
] ]
# Tab based layout # Tab based layout
layout = [[TabGroup([[Tab('Variables', col1), Tab('REPL & Watches', col2)]])]] layout = [ [Text('Debugging: ' + self._find_users_code())],
[TabGroup([[Tab('Variables', col1), Tab('REPL & Watches', col2)]])]]
# ------------------------------- Create main window ------------------------------- # ------------------------------- Create main window -------------------------------
window = Window("PySimpleGUI Debugger", layout, icon=PSGDebugLogo, margins=(0, 0), location=location, keep_on_top=True) window = Window("PySimpleGUI Debugger", layout, icon=PSGDebugLogo, margins=(0, 0), location=location, keep_on_top=True, right_click_menu=[[''], ['Exit',]])
Window._read_call_from_debugger = True Window._read_call_from_debugger = True
window.finalize() window.finalize()
@ -18228,6 +18229,31 @@ class _Debugger():
return True # return indicating the window stayed open return True # return indicating the window stayed open
def _find_users_code(self):
try: # lots can go wrong so wrapping the entire thing
trace_details = traceback.format_stack()
file_info_pysimplegui, error_message = None, ''
for line in reversed(trace_details):
if __file__ not in line:
file_info_pysimplegui = line.split(",")[0]
error_message = line
break
if file_info_pysimplegui is None:
return ''
error_parts = None
if error_message != '':
error_parts = error_message.split(', ')
if len(error_parts) < 4:
error_message = error_parts[0]+'\n'+error_parts[1]+ '\n' + ''.join(error_parts[2:])
if error_parts is None:
print('*** Error popup attempted but unable to parse error details ***')
print(trace_details)
return ''
filename = error_parts[0][error_parts[0].index('File ')+5:]
return filename
except:
return ''
###### # # ###### # #
# # #### ##### # # ##### # # # # # # ##### #### # # # # #### ##### # # ##### # # # # # # ##### #### # #
# # # # # # # # # # # # # # ## # # # # # # # # # # # # # # # # # # # # # ## # # # # # # #