Module TkZero.Separator
Creates a themed separator.
Expand source code
"""
Creates a themed separator.
"""
import tkinter as tk
from tkinter import ttk
from typing import Union
class OrientModes:
"""
The orient modes for separators
Horizontal - makes the separators horizontal
Vertical - makes the separators vertical
"""
Horizontal = tk.HORIZONTAL
Vertical = tk.VERTICAL
class Separator(ttk.Separator):
def __init__(
self,
parent: Union[tk.Widget, Union[tk.Tk, tk.Toplevel]],
orientation: str = OrientModes.Vertical,
):
"""
Initiate a ttk.Separator.
:param parent: The parent of the scrollbar.
:param orientation: The orientation of the scrollbar and what
direction it should scroll the widget in. Defaults to
OrientModes.Vertical and is a str.
"""
if not isinstance(parent, (tk.Widget, tk.Tk, tk.Toplevel)):
raise TypeError(
f"parent is not a "
f"Union[tk.Widget, Union[tk.Tk, tk.Toplevel]]! "
f"(type passed in: {repr(type(parent))})"
)
if not isinstance(orientation, str):
raise TypeError(
f"orientation is not a str! "
f"(type passed in: {repr(type(orientation))})"
)
super().__init__(master=parent, orient=orientation)
self._style_root = "TSeparator"
self._enabled = True
self._orientation = orientation
self._hovering_over = False
self.bind("<Enter>", lambda _: self._set_hover_state(True))
self.bind("<Leave>", lambda _: self._set_hover_state(False))
@property
def enabled(self) -> bool:
"""
Get whether this widget is in normal or disabled mode. (grayed out and
cannot interact with)
:return: A bool, True if normal otherwise False.
"""
return self._enabled
@enabled.setter
def enabled(self, new_state: bool) -> None:
"""
Set whether this widget is in normal mode or disabled mode. (grayed out
and cannot interact with)
:param new_state: The new state (a bool) True for enabled and False
for disabled.
:return: None.
"""
if not isinstance(new_state, bool):
raise TypeError(
f"new_state is not a bool! "
f"(type passed in: {repr(type(new_state))})"
)
self._enabled = new_state
self.state(["!disabled" if self._enabled else "disabled"])
@property
def hovering_over(self) -> bool:
"""
Get whether the cursor is hovering over this widget or not.
:return: A bool.
"""
return self._hovering_over
def _set_hover_state(self, is_hovering: bool) -> None:
"""
Set whether we are hovering over this widget or not.
:param is_hovering: A bool.
:return: None.
"""
self._hovering_over = is_hovering
Classes
class OrientModes
-
The orient modes for separators Horizontal - makes the separators horizontal Vertical - makes the separators vertical
Expand source code
class OrientModes: """ The orient modes for separators Horizontal - makes the separators horizontal Vertical - makes the separators vertical """ Horizontal = tk.HORIZONTAL Vertical = tk.VERTICAL
Class variables
var Horizontal
var Vertical
class Separator (parent: Union[tkinter.Widget, tkinter.Tk, tkinter.Toplevel], orientation: str = 'vertical')
-
Ttk Separator widget displays a horizontal or vertical separator bar.
Initiate a ttk.Separator.
:param parent: The parent of the scrollbar. :param orientation: The orientation of the scrollbar and what direction it should scroll the widget in. Defaults to OrientModes.Vertical and is a str.
Expand source code
class Separator(ttk.Separator): def __init__( self, parent: Union[tk.Widget, Union[tk.Tk, tk.Toplevel]], orientation: str = OrientModes.Vertical, ): """ Initiate a ttk.Separator. :param parent: The parent of the scrollbar. :param orientation: The orientation of the scrollbar and what direction it should scroll the widget in. Defaults to OrientModes.Vertical and is a str. """ if not isinstance(parent, (tk.Widget, tk.Tk, tk.Toplevel)): raise TypeError( f"parent is not a " f"Union[tk.Widget, Union[tk.Tk, tk.Toplevel]]! " f"(type passed in: {repr(type(parent))})" ) if not isinstance(orientation, str): raise TypeError( f"orientation is not a str! " f"(type passed in: {repr(type(orientation))})" ) super().__init__(master=parent, orient=orientation) self._style_root = "TSeparator" self._enabled = True self._orientation = orientation self._hovering_over = False self.bind("<Enter>", lambda _: self._set_hover_state(True)) self.bind("<Leave>", lambda _: self._set_hover_state(False)) @property def enabled(self) -> bool: """ Get whether this widget is in normal or disabled mode. (grayed out and cannot interact with) :return: A bool, True if normal otherwise False. """ return self._enabled @enabled.setter def enabled(self, new_state: bool) -> None: """ Set whether this widget is in normal mode or disabled mode. (grayed out and cannot interact with) :param new_state: The new state (a bool) True for enabled and False for disabled. :return: None. """ if not isinstance(new_state, bool): raise TypeError( f"new_state is not a bool! " f"(type passed in: {repr(type(new_state))})" ) self._enabled = new_state self.state(["!disabled" if self._enabled else "disabled"]) @property def hovering_over(self) -> bool: """ Get whether the cursor is hovering over this widget or not. :return: A bool. """ return self._hovering_over def _set_hover_state(self, is_hovering: bool) -> None: """ Set whether we are hovering over this widget or not. :param is_hovering: A bool. :return: None. """ self._hovering_over = is_hovering
Ancestors
- tkinter.ttk.Separator
- tkinter.ttk.Widget
- tkinter.Widget
- tkinter.BaseWidget
- tkinter.Misc
- tkinter.Pack
- tkinter.Place
- tkinter.Grid
Instance variables
var enabled : bool
-
Get whether this widget is in normal or disabled mode. (grayed out and cannot interact with)
:return: A bool, True if normal otherwise False.
Expand source code
@property def enabled(self) -> bool: """ Get whether this widget is in normal or disabled mode. (grayed out and cannot interact with) :return: A bool, True if normal otherwise False. """ return self._enabled
var hovering_over : bool
-
Get whether the cursor is hovering over this widget or not.
:return: A bool.
Expand source code
@property def hovering_over(self) -> bool: """ Get whether the cursor is hovering over this widget or not. :return: A bool. """ return self._hovering_over