36 lines
1 KiB
Python
36 lines
1 KiB
Python
import tkinter as tk
|
|
|
|
|
|
class ToolTip:
|
|
def __init__(self, widget, text):
|
|
self.widget = widget
|
|
self.text = text
|
|
self.tip_window = None
|
|
self.widget.bind("<Enter>", self.show_tooltip)
|
|
self.widget.bind("<Leave>", self.hide_tooltip)
|
|
|
|
def show_tooltip(self, event=None):
|
|
if self.tip_window or not self.text:
|
|
return
|
|
x, y, _, _ = self.widget.bbox("insert")
|
|
x = x + self.widget.winfo_rootx() + 25
|
|
y = y + self.widget.winfo_rooty() + 25
|
|
self.tip_window = tw = tk.Toplevel(self.widget)
|
|
tw.wm_overrideredirect(True)
|
|
tw.wm_geometry(f"+{x}+{y}")
|
|
label = tk.Label(
|
|
tw,
|
|
text=self.text,
|
|
justify=tk.LEFT,
|
|
background="#ffffff",
|
|
relief=tk.SOLID,
|
|
borderwidth=1,
|
|
font=("tahoma", "20", "normal"),
|
|
)
|
|
label.pack(ipadx=1)
|
|
|
|
def hide_tooltip(self, event=None):
|
|
tw = self.tip_window
|
|
self.tip_window = None
|
|
if tw:
|
|
tw.destroy()
|