Addition of horizonal scrollbar to Listbox
This commit is contained in:
parent
c7700bb4d6
commit
f7da5416f1
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
version = __version__ = "4.49.0.11 Unreleased"
|
version = __version__ = "4.49.0.12 Unreleased"
|
||||||
|
|
||||||
_change_log = """
|
_change_log = """
|
||||||
|
|
||||||
|
@ -42,6 +42,8 @@ _change_log = """
|
||||||
Option to convert bools and None. Normally stored as strings. Will convert them to Python True, False, None automatically (on by default)
|
Option to convert bools and None. Normally stored as strings. Will convert them to Python True, False, None automatically (on by default)
|
||||||
4.49.0.11
|
4.49.0.11
|
||||||
Better formnatted printing of INI based UserSettings object
|
Better formnatted printing of INI based UserSettings object
|
||||||
|
4.49.0.12
|
||||||
|
Addition of horizontal scrollbar to Listbox. Parameter is horizontal_scroll. Default = False
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
||||||
|
@ -2062,7 +2064,7 @@ class Listbox(Element):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, values, default_values=None, select_mode=None, change_submits=False, enable_events=False,
|
def __init__(self, values, default_values=None, select_mode=None, change_submits=False, enable_events=False,
|
||||||
bind_return_key=False, size=(None, None), s=(None, None), disabled=False, auto_size_text=None, font=None, no_scrollbar=False,
|
bind_return_key=False, size=(None, None), s=(None, None), disabled=False, auto_size_text=None, font=None, no_scrollbar=False, horizontal_scroll=False,
|
||||||
background_color=None, text_color=None, highlight_background_color=None, highlight_text_color=None,
|
background_color=None, text_color=None, highlight_background_color=None, highlight_text_color=None,
|
||||||
key=None, k=None, pad=None, p=None, tooltip=None, expand_x=False, expand_y=False,right_click_menu=None, visible=True, metadata=None):
|
key=None, k=None, pad=None, p=None, tooltip=None, expand_x=False, expand_y=False,right_click_menu=None, visible=True, metadata=None):
|
||||||
"""
|
"""
|
||||||
|
@ -2090,6 +2092,8 @@ class Listbox(Element):
|
||||||
:type font: (str or (str, int[, str]) or None)
|
:type font: (str or (str, int[, str]) or None)
|
||||||
:param no_scrollbar: Controls if a scrollbar should be shown. If True, no scrollbar will be shown
|
:param no_scrollbar: Controls if a scrollbar should be shown. If True, no scrollbar will be shown
|
||||||
:type no_scrollbar: (bool)
|
:type no_scrollbar: (bool)
|
||||||
|
:param horizontal_scroll: Controls if a horizontal scrollbar should be shown. If True a horizontal scrollbar will be shown in addition to vertical
|
||||||
|
:type horizontal_scroll: (bool)
|
||||||
:param background_color: color of background
|
:param background_color: color of background
|
||||||
:type background_color: (str)
|
:type background_color: (str)
|
||||||
:param text_color: color of the text
|
:param text_color: color of the text
|
||||||
|
@ -2141,10 +2145,12 @@ class Listbox(Element):
|
||||||
self.HighlightBackgroundColor = highlight_background_color if highlight_background_color is not None else fg
|
self.HighlightBackgroundColor = highlight_background_color if highlight_background_color is not None else fg
|
||||||
self.HighlightTextColor = highlight_text_color if highlight_text_color is not None else bg
|
self.HighlightTextColor = highlight_text_color if highlight_text_color is not None else bg
|
||||||
self.RightClickMenu = right_click_menu
|
self.RightClickMenu = right_click_menu
|
||||||
self.vsb = None # type: tk.Scrollbar
|
self.vsb = None # type: tk.Scrollbar or None
|
||||||
|
self.hsb = None # type: tk.Scrollbar | None
|
||||||
self.TKListbox = self.Widget = None # type: tk.Listbox
|
self.TKListbox = self.Widget = None # type: tk.Listbox
|
||||||
self.element_frame = None # type: tk.Frame
|
self.element_frame = None # type: tk.Frame
|
||||||
self.NoScrollbar = no_scrollbar
|
self.NoScrollbar = no_scrollbar
|
||||||
|
self.HorizontalScroll = horizontal_scroll
|
||||||
key = key if key is not None else k
|
key = key if key is not None else k
|
||||||
sz = size if size != (None, None) else s
|
sz = size if size != (None, None) else s
|
||||||
pad = pad if pad is not None else p
|
pad = pad if pad is not None else p
|
||||||
|
@ -14057,14 +14063,27 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form):
|
||||||
if element.ChangeSubmits:
|
if element.ChangeSubmits:
|
||||||
element.TKListbox.bind('<<ListboxSelect>>', element._ListboxSelectHandler)
|
element.TKListbox.bind('<<ListboxSelect>>', element._ListboxSelectHandler)
|
||||||
if not element.NoScrollbar:
|
if not element.NoScrollbar:
|
||||||
|
# Vertical scrollbar
|
||||||
element.vsb = tk.Scrollbar(element_frame, orient="vertical", command=element.TKListbox.yview)
|
element.vsb = tk.Scrollbar(element_frame, orient="vertical", command=element.TKListbox.yview)
|
||||||
element.TKListbox.configure(yscrollcommand=element.vsb.set)
|
element.TKListbox.configure(yscrollcommand=element.vsb.set)
|
||||||
element.vsb.pack(side=tk.RIGHT, fill='y')
|
element.vsb.pack(side=tk.RIGHT, fill='y')
|
||||||
|
|
||||||
|
# Horizontal scrollbar
|
||||||
|
if element.HorizontalScroll:
|
||||||
|
hscrollbar = tk.Scrollbar(element_frame, orient=tk.HORIZONTAL)
|
||||||
|
hscrollbar.pack(side=tk.BOTTOM, fill='x')
|
||||||
|
hscrollbar.config(command=element.Widget.xview)
|
||||||
|
element.Widget.configure(xscrollcommand=hscrollbar.set)
|
||||||
|
element.hsb = hscrollbar
|
||||||
|
|
||||||
# Chr0nic
|
# Chr0nic
|
||||||
element.TKListbox.bind("<Enter>", lambda event, em=element: testMouseHook(em))
|
element.TKListbox.bind("<Enter>", lambda event, em=element: testMouseHook(em))
|
||||||
element.TKListbox.bind("<Leave>", lambda event, em=element: testMouseUnhook(em))
|
element.TKListbox.bind("<Leave>", lambda event, em=element: testMouseUnhook(em))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction)
|
expand, fill, row_should_expand, row_fill_direction = _add_expansion(element, row_should_expand, row_fill_direction)
|
||||||
element_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=fill, expand=expand)
|
element_frame.pack(side=tk.LEFT, padx=elementpad[0], pady=elementpad[1], fill=fill, expand=expand)
|
||||||
element.TKListbox.pack(side=tk.LEFT, fill=fill, expand=expand)
|
element.TKListbox.pack(side=tk.LEFT, fill=fill, expand=expand)
|
||||||
|
@ -19205,7 +19224,7 @@ class UserSettings:
|
||||||
# to access the user settings without diarectly using the UserSettings class
|
# to access the user settings without diarectly using the UserSettings class
|
||||||
_default_for_function_interface = None # type: UserSettings
|
_default_for_function_interface = None # type: UserSettings
|
||||||
|
|
||||||
def __init__(self, filename=None, path=None, silent_on_error=False, autosave=True, use_config_file=False, convert_bools_and_none=True):
|
def __init__(self, filename=None, path=None, silent_on_error=False, autosave=True, use_config_file=None, convert_bools_and_none=True):
|
||||||
"""
|
"""
|
||||||
User Settings
|
User Settings
|
||||||
|
|
||||||
|
@ -19219,7 +19238,7 @@ class UserSettings:
|
||||||
:type autosave: (bool)
|
:type autosave: (bool)
|
||||||
:param use_config_file: If True then the file format will be a config.ini rather than json
|
:param use_config_file: If True then the file format will be a config.ini rather than json
|
||||||
:type use_config_file: (bool)
|
:type use_config_file: (bool)
|
||||||
:param convert_bools_and_none: If True then "True", "False", "None" will be converted to the Python values True, False, None. Default is TRUE
|
:param convert_bools_and_none: If True then "True", "False", "None" will be converted to the Python values True, False, None when using INI files. Default is TRUE
|
||||||
:type convert_bools_and_none: (bool)
|
:type convert_bools_and_none: (bool)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -19230,6 +19249,9 @@ class UserSettings:
|
||||||
self.default_value = None
|
self.default_value = None
|
||||||
self.silent_on_error = silent_on_error
|
self.silent_on_error = silent_on_error
|
||||||
self.autosave = autosave
|
self.autosave = autosave
|
||||||
|
if filename is not None and filename.endswith('.ini') and use_config_file is None:
|
||||||
|
warnings.warn('[UserSettings] You have specified a filename with .ini extension but did not set use_config_file. Setting use_config_file for you.', UserWarning)
|
||||||
|
use_config_file = True
|
||||||
self.use_config_file = use_config_file
|
self.use_config_file = use_config_file
|
||||||
# self.retain_config_comments = retain_config_comments
|
# self.retain_config_comments = retain_config_comments
|
||||||
self.convert_bools = convert_bools_and_none
|
self.convert_bools = convert_bools_and_none
|
||||||
|
|
Loading…
Reference in New Issue