返回Tkinter Treeview iid

问题描述 投票:0回答:2

我有一个树视图,并已插入一些数据,如下所示。

self.tree.insert('', 'end', iid="test1", text="test a", values=("data1", "data2"))

这会在树视图末尾添加一个条目,其中包含文本“test a”和列值“data1”和“data2”。

iid已设置为“test1”。

我想在树视图中返回项目的iid的值,以便我可以将它用于其他一些函数(我将在此iid中存储文件路径)

我尝试使用treeview.item()并返回以下没有iid的字典:

{'version': 'data1', 'author': 'data2'}

(版本和作者是列标题)

所以我的问题是:有一种简单的方法可以将给定行/条目的iid返回到树视图吗?

python python-3.x tkinter treeview
2个回答
1
投票

要获得iid,您可以使用identify()函数:

tree.identify(event.x, event.y) # item at row "x" and column "y"

iid参数代表项目标识符,对于每个项目都是唯一的,您可以为其提供所需的值。


1
投票

学习Python,在这里找不到我喜欢的问题的答案,所以我终于找到了我想要的东西,并认为我会发布我发现的东西。 iid = tree.focus()返回请求的信息。

在我的树视图中,我添加了以下代码:

for item in tree.selection():
    item_child = tree.get_children(item)
    item = tree.item(item)
    iid = tree.focus()
    print ("iid = ", iid, "Item = ", item, "Child iid's =", item_child)

这是我的代码结果:

{'text': 'TRAINS', 'image': '', 'values': '', 'open': 0, 'tags': ['m']} iid = 1 Item = {'text': 'TRAINS', 'image': '', 'values': '', 'open': 0, 'tags': ['m']} Child iid's = ('8', '9', '10')

请注意,在结果的第二行的开头,iid被列为“1”,这是该项目的正确iid。我选择的所有树视图项都返回了正确的iid。

希望这能帮助下一个人一点点。

© www.soinside.com 2019 - 2024. All rights reserved.