From d239bb582b2bf2b13ae28d1a22dffb82050add11 Mon Sep 17 00:00:00 2001 From: MikeTheWatchGuy Date: Wed, 21 Aug 2019 23:14:56 -0400 Subject: [PATCH] New Listbox parameter - no_scrollbar. If True then no scrollbar wiill be added to the Widget. --- PySimpleGUI.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/PySimpleGUI.py b/PySimpleGUI.py index 62325574..1916bf13 100644 --- a/PySimpleGUI.py +++ b/PySimpleGUI.py @@ -1071,7 +1071,7 @@ class Listbox(Element): when a window.Read() is executed. """ def __init__(self, values, default_values=None, select_mode=None, change_submits=False, enable_events=False, - bind_return_key=False, size=(None, None), disabled=False, auto_size_text=None, font=None, + bind_return_key=False, size=(None, None), disabled=False, auto_size_text=None, font=None, no_scrollbar=False, background_color=None, text_color=None, key=None, pad=None, tooltip=None, right_click_menu=None, visible=True): """ @@ -1118,6 +1118,7 @@ class Listbox(Element): self.RightClickMenu = right_click_menu self.vsb = None # type: tk.Scrollbar self.TKListbox = self.Widget = None # type: tk.Listbox + self.NoScrollbar = no_scrollbar super().__init__(ELEM_TYPE_INPUT_LISTBOX, size=size, auto_size_text=auto_size_text, font=font, background_color=bg, text_color=fg, key=key, pad=pad, tooltip=tooltip, visible=visible) @@ -1158,10 +1159,12 @@ class Listbox(Element): warnings.warn('* Listbox Update selection_set failed with index {}*'.format(set_to_index)) if visible is False: self.TKListbox.pack_forget() - self.vsb.pack_forget() + if not self.NoScrollbar: + self.vsb.pack_forget() elif visible is True: self.TKListbox.pack() - self.vsb.pack() + if not self.NoScrollbar: + self.vsb.pack() if scroll_to_index is not None and len(self.Values): self.TKListbox.yview_moveto(scroll_to_index/len(self.Values)) @@ -7754,11 +7757,12 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): element.TKListbox.configure(fg=text_color) if element.ChangeSubmits: element.TKListbox.bind('<>', element._ListboxSelectHandler) - element.vsb = tk.Scrollbar(listbox_frame, orient="vertical", command=element.TKListbox.yview) - element.TKListbox.configure(yscrollcommand=element.vsb.set) - element.TKListbox.pack(side=tk.LEFT) - element.vsb.pack(side=tk.LEFT, fill='y') + if not element.NoScrollbar: + element.vsb = tk.Scrollbar(listbox_frame, orient="vertical", command=element.TKListbox.yview) + element.TKListbox.configure(yscrollcommand=element.vsb.set) + element.vsb.pack(side=tk.RIGHT, fill='y') listbox_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1]) + element.TKListbox.pack(side=tk.LEFT) if element.Visible is False: listbox_frame.pack_forget() element.vsb.pack_forget() @@ -11042,7 +11046,7 @@ def main(): ] frame2 = [ - [Listbox(['Listbox 1', 'Listbox 2', 'Listbox 3'], select_mode=SELECT_MODE_EXTENDED, size=(20, 5))], + [Listbox(['Listbox 1', 'Listbox 2', 'Listbox 3'], select_mode=SELECT_MODE_EXTENDED, size=(20, 5), no_scrollbar=True)], [Combo(['Combo item 1',2,3,4 ], size=(20, 3),readonly=True, text_color='red', background_color='red', key='_COMBO1_')], # [Combo(['Combo item 1', 2,3,4], size=(20, 3), readonly=False, text_color='red', background_color='red', key='_COMBO2_')], [Spin([1, 2, 3, 'a','b','c'], size=(4, 3))],