I'm trying to apply a method describing here Display message when hovering over something with mouse cursor in Python
from tkinter import *
class ToolTip(object):
def __init__(self, widget):
self.widget = widget
self.tipwindow = None
self.id = None
self.x = self.y = 0
def showtip(self, text):
"Display text in tooltip window"
self.text = text
if self.tipwindow or not self.text:
return
x, y, cx, cy = self.widget.bbox("insert")
x = x + self.widget.winfo_rootx() + 57
y = y + cy + self.widget.winfo_rooty() +27
self.tipwindow = tw = Toplevel(self.widget)
tw.wm_overrideredirect(1)
tw.wm_geometry("+%d+%d" % (x, y))
label = Label(tw, text=self.text, justify=LEFT,
background="#ffffe0", relief=SOLID, borderwidth=1,
font=("tahoma", "8", "normal"))
label.pack(ipadx=1)
def hidetip(self):
tw = self.tipwindow
self.tipwindow = None
if tw:
tw.destroy()
def CreateToolTip(widget, text):
toolTip = ToolTip(widget)
def enter(event):
toolTip.showtip(text)
def leave(event):
toolTip.hidetip()
widget.bind('<Enter>', enter)
widget.bind('<Leave>', leave)
button = Button(root, text = 'click mem')
button.pack()
CreateToolTip(button, text = 'Hello World')
But this method is not working with treeview table. When I try to execute this code like:
tree = ttk.Treeview(frame)
tree.pack()
CreateToolTip(tree, text = 'Hello World')
The mistake appears:
Traceback (most recent call last):
File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
return self.func(*args)
File "/home/polina/PycharmProjects/dynamic_table/moxa.py", line 66, in enter
toolTip.showtip(text)
File "/home/polina/PycharmProjects/dynamic_table/moxa.py", line 46, in showtip
x, y, cx, cy = self.widget.bbox("insert")
File "/usr/lib/python3.8/tkinter/ttk.py", line 1217, in bbox
return self._getints(self.tk.call(self._w, "bbox", item, column)) or ''
_tkinter.TclError: Item insert not found
Is there another method to display a comment when we hover over row? Or maybe the described above can be fixed?