tkinter - 将不同的 <Enter> 事件绑定到 Treeview 小部件中的每一行

And*_*ewK 0 python treeview tkinter

我想创建一个独特的小工具提示窗口,当我将Treeview鼠标悬停在小部件的每一行上时,就会出现该窗口。

我无法弄清楚如何将事件唯一地绑定<Enter><Leave>每一行。

小智 5

没必要<Enter><Leave>. 您可以使用:此代码是本文<Motion>的修改版本

import tkinter as tk
from tkinter import Label, ttk


def highlight_row(event):
    tree = event.widget
    item = tree.identify_row(event.y)
    if tree.item(item,'text')!='':
        lbl.config(text=tree.item(item,'text'))
        lbl.place(x=event.x, y=event.y)
    else:
        lbl.place_forget()
    tree.tk.call(tree, "tag", "remove", "highlight")
    tree.tk.call(tree, "tag", "add", "highlight", item)

root = tk.Tk()

tree = ttk.Treeview(root, style = 'W.TButton')
vsb = ttk.Scrollbar(root, command=tree.yview)
tree.configure(yscrollcommand=vsb.set)

vsb.pack(side="right", fill="y")
tree.pack(side="left", fill="both", expand=True)

tree.tag_configure('highlight', background='lightblue')
tree.bind("<Motion>", highlight_row)
lbl=Label(root,bg="white")
for i in range(100):
    tree.insert("", "end", text=f"Item #{i+1}")
    tree.tag_bind(i, '<Motion>', highlight_row)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)