Fix MouseOverLabel not working in certain conditions
This commit is contained in:
1 parent
d892bc02b2
commit
bb87b2793e
1 file changed
+13
-17
@@ -258,14 +258,19 @@ class PaddedListbox(tk.Listbox):
|
|||||||
|
|
||||||
class MouseOverLabel(ttk.Label):
|
class MouseOverLabel(ttk.Label):
|
||||||
def __init__(self, *args, alt_text: str = '', reverse: bool = False, **kwargs) -> None:
|
def __init__(self, *args, alt_text: str = '', reverse: bool = False, **kwargs) -> None:
|
||||||
text: str = kwargs.get("text", '')
|
self._org_text: str = ''
|
||||||
self._org_text: str = text
|
self._alt_text: str = ''
|
||||||
self._alt_text: str = alt_text
|
|
||||||
self._alt_reverse: bool = reverse
|
self._alt_reverse: bool = reverse
|
||||||
self._bind_enter: str | None = None
|
self._bind_enter: str | None = None
|
||||||
self._bind_leave: str | None = None
|
self._bind_leave: str | None = None
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.configure(text=text, alt_text=alt_text, reverse=reverse)
|
self.configure(text=kwargs.get("text", ''), alt_text=alt_text, reverse=reverse)
|
||||||
|
|
||||||
|
def _set_org(self, event: tk.Event[MouseOverLabel]):
|
||||||
|
super().config(text=self._org_text)
|
||||||
|
|
||||||
|
def _set_alt(self, event: tk.Event[MouseOverLabel]):
|
||||||
|
super().config(text=self._alt_text)
|
||||||
|
|
||||||
def configure(self, *args: Any, **kwargs: Any) -> Any:
|
def configure(self, *args: Any, **kwargs: Any) -> Any:
|
||||||
options: dict[str, Any] = {}
|
options: dict[str, Any] = {}
|
||||||
@@ -306,21 +311,12 @@ class MouseOverLabel(ttk.Label):
|
|||||||
self.unbind(self._bind_leave)
|
self.unbind(self._bind_leave)
|
||||||
self._bind_leave = None
|
self._bind_leave = None
|
||||||
if self._org_text and self._alt_text:
|
if self._org_text and self._alt_text:
|
||||||
orig_config = super().config
|
|
||||||
if self._alt_reverse:
|
if self._alt_reverse:
|
||||||
self._bind_enter = self.bind(
|
self._bind_enter = self.bind("<Enter>", self._set_org)
|
||||||
"<Enter>", lambda e: orig_config(text=self._org_text)
|
self._bind_leave = self.bind("<Leave>", self._set_alt)
|
||||||
)
|
|
||||||
self._bind_leave = self.bind(
|
|
||||||
"<Leave>", lambda e: orig_config(text=self._alt_text)
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
self._bind_enter = self.bind(
|
self._bind_enter = self.bind("<Enter>", self._set_alt)
|
||||||
"<Enter>", lambda e: orig_config(text=self._alt_text)
|
self._bind_leave = self.bind("<Leave>", self._set_org)
|
||||||
)
|
|
||||||
self._bind_leave = self.bind(
|
|
||||||
"<Leave>", lambda e: orig_config(text=self._org_text)
|
|
||||||
)
|
|
||||||
return super().configure(options)
|
return super().configure(options)
|
||||||
|
|
||||||
def config(self, *args: Any, **kwargs: Any) -> Any:
|
def config(self, *args: Any, **kwargs: Any) -> Any:
|
||||||
|
|||||||
Reference in new issue
Block a user