8000 Merge pull request #19011 from anntzer/tktip · matplotlib/matplotlib@4f12525 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 4f12525

Browse files
authored
Merge pull request #19011 from anntzer/tktip
Simplify tk tooltip setup.
2 parents 0d4cbee + 19f775e commit 4f12525

File tree

1 file changed

+27
-45
lines changed

1 file changed

+27
-45
lines changed

lib/matplotlib/backends/_backend_tk.py

Lines changed: 27 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ def __init__(self, canvas, window=None, *, pack_toolbar=True):
628628
command=getattr(self, callback),
629629
)
630630
if tooltip_text is not None:
631-
ToolTip.createToolTip(button, tooltip_text)
631+
add_tooltip(button, tooltip_text)
632632

633633
self._label_font = tkinter.font.Font(root=window, size=10)
634634

@@ -889,62 +889,44 @@ def set_history_buttons(self):
889889
state_map = {True: tk.NORMAL, False: tk.DISABLED}
890890
can_back = self._nav_stack._pos > 0
891891
can_forward = self._nav_stack._pos < len(self._nav_stack) - 1
892-
893892
if "Back" in self._buttons:
894893
self._buttons['Back']['state'] = state_map[can_back]
895-
896894
if "Forward" in self._buttons:
897895
self._buttons['Forward']['state'] = state_map[can_forward]
898896

899897

900-
class ToolTip:
901-
"""
902-
Tooltip recipe from
903-
http://www.voidspace.org.uk/python/weblog/arch_d7_2006_07_01.shtml#e387
904-
"""
905-
@staticmethod
906-
def createToolTip(widget, text):
907-
toolTip = ToolTip(widget)
908-
def enter(event):
909-
toolTip.showtip(text)
910-
def leave(event):
911-
toolTip.hidetip()
912-
widget.bind('<Enter>', enter)
913-
widget.bind('<Leave>', leave)
914-
915-
def __init__(self, widget):
916-
self.widget = widget
917-
self.tipwindow = None
918-
self.id = None
919-
self.x = self.y = 0
920-
921-
def showtip(self, text):
898+
def add_tooltip(widget, text):
899+
tipwindow = None
900+
901+
def showtip(event):
922902
"""Display text in tooltip window."""
923-
self.text = text
924-
if self.tipwindow or not self.text:
903+
nonlocal tipwindow
904+
if tipwindow or not text:
925905
return
926-
x, y, _, _ = self.widget.bbox("insert")
927-
x = x + self.widget.winfo_rootx() + self.widget.winfo_width()
928-
y = y + self.widget.winfo_rooty()
929-
self.tipwindow = tw = tk.Toplevel(self.widget)
930-
tw.wm_overrideredirect(1)
931-
tw.wm_geometry("+%d+%d" % (x, y))
932-
try:
933-
# For Mac OS
934-
tw.tk.call("::tk::unsupported::MacWindowStyle",
935-
"style", tw._w,
936-
"help", "noActivates")
906+
x, y, _, _ = widget.bbox("insert")
907+
x = x + widget.winfo_rootx() + widget.winfo_width()
908+
y = y + widget.winfo_rooty()
909+
tipwindow = tk.Toplevel(widget)
910+
tipwindow.overrideredirect(1)
911+
tipwindow.geometry(f"+{x}+{y}")
912+
try: # For Mac OS
913+
tipwindow.tk.call("::tk::unsupported::MacWindowStyle",
914+
"style", tipwindow._w,
915+
"help", "noActivates")
937916
except tk.TclError:
938917
pass
939-
label = tk.Label(tw, text=self.text, justify=tk.LEFT,
918+
label = tk.Label(tipwindow, text=text, justify=tk.LEFT,
940919
relief=tk.SOLID, borderwidth=1)
941920
label.pack(ipadx=1)
942921

943-
def hidetip(self):
944-
tw = self.tipwindow
945-
self< 8000 /span>.tipwindow = None
946-
if tw:
947-
tw.destroy()
922+
def hidetip(event):
923+
nonlocal tipwindow
924+
if tipwindow:
925+
tipwindow.destroy()
926+
tipwindow = None
927+
928+
widget.bind("<Enter>", showtip)
929+
widget.bind("<Leave>", hidetip)
948930

949931

950932
@backend_tools._register_tool_class(FigureCanvasTk)
@@ -999,7 +981,7 @@ def add_toolitem(
999981
lambda: self._button_click(name))
1000982
button.pack_configure(before=before)
1001983
if description is not None:
1002-
ToolTip.createToolTip(button, description)
984+
add_tooltip(button, description)
1003985
self._toolitems.setdefault(name, [])
1004986
self._toolitems[name].append(button)
1005987

0 commit comments

Comments
 (0)
0