【问题标题】:Returning Tkinter Treeview iid返回 Tkinter Treeview iid
【发布时间】:2017-08-20 00:26:27
【问题描述】:

我有一个树形视图,并在其中插入了一些数据,如下所示。

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 返回到树视图?

【问题讨论】:

  • Item selected > Press a run button > 使用 iid(它是一个文件路径)来启动一些子进程。
  • 使用tree.identify(event.x, event.y)
  • @BillalBEGUERADJ 看起来我可能有一些与此相同的工作。谢谢。你知道iid 代表什么吗?
  • 太棒了,谢谢。如果您想提交您的 cmets 作为答案,我很乐意接受。

标签: python python-3.x tkinter treeview


【解决方案1】:

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

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

iid 参数代表项目标识符,它对每个项目都是唯一的,你可以给它你想要的值。

【讨论】:

  • 这是完全相同的问题,但产生了错误,知道为什么吗? stackoverflow.com/questions/43673883/…?
  • 我可能会在一天结束之前回复你,我现在很忙@new_to_coding
  • 感谢您的回复,但不要担心,有人回复了一个可行的解决方案,您可能还是想看看,小心
【解决方案2】:

学习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。

希望这对下一个人有所帮助。

【讨论】:

    【解决方案3】:

    另一种解决方案是iid=tree.focus()

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 2017-09-26
      • 1970-01-01
      • 2017-09-26
      • 2012-03-17
      • 1970-01-01
      • 2023-04-04
      • 2018-03-19
      • 1970-01-01
      相关资源
      最近更新 更多