Python tkinter treeview从所选项目返回iid

2024-10-03 21:34:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python tkinter treeview中,我试图根据所选treeview项的iid来显示某些内容,它发生在选择事件(鼠标单击)上,但我无法使其工作:

def tree_click_event (event):
    iid = treedisplay.identify(event.x,event.y)

treedisplay = ttk.Treeview(root,selectmode='browse')
treedisplay.bind('<<TreeviewSelect>>', tree_click_event)
treedisplay.pack(side='top', fill='both', expand=1)

错误:

^{pr2}$

这可以归结为创建树,将它打包到tkinter窗口中,寻找熟悉这个模块的人来确切地知道我做错了什么

感谢您的示例@BryanOakley,它可以获取项目的文本。难道没有办法让下面的代码工作吗?在

import tkinter as tk
from tkinter import ttk

class App:
    def __init__(self):
        self.root = tk.Tk()
        self.tree = ttk.Treeview()
        self.tree.pack(side="top", fill="both")
        self.tree.bind("<<TreeviewSelect>>", self.tree_click_event)

        for i in range(10):
            self.tree.insert("", "end", text="Item %s" % i)

        self.root.mainloop()

    def tree_click_event(self, event):
        iid = self.tree.identify(event.x,event.y)
        print (iid)

if __name__ == "__main__":
    app = App()

Tags: selfeventtreebindtkinterdefrootclick
1条回答
网友
1楼 · 发布于 2024-10-03 21:34:38

identify需要三个参数,而您只传递了两个参数。第一个参数表示要标识的组件,并且必须是以下内容之一:region、item、column、row或element。在

例如:

iid = treedisplay.identify("item", event.x,event.y)

注意:虽然上面的语法是正确的,但它不会完全像您所认为的那样。在<<TreeviewSelect>>事件的情况下,您不会得到x和y坐标。这是因为事件可以由键盘和鼠标事件触发。identify方法应该用于对鼠标事件的显式绑定,并且大多只用于低级绑定。在

如果需要选定的项,请使用selection方法,该方法将返回项目ID的列表:

^{pr2}$

相关问题 更多 >