如何获取所选树视图项的值?

时间:2016-01-18 07:11:27

标签: python python-2.7 python-3.x tkinter treeview

我已经查看了几篇有关此事的帖子,他们已经完成了以下内容

- 我得到的输出是空白的

- 我得到的输出是id,除非有人能告诉我如何操作它,否则它实际上是无用的

- 根本没有输出

我只想点击树视图中的项目,立即获得我刚刚点击的文字

 def OnDoubleClick(event):
        item = course1_assessments.focus()
        print (item)

 course1_assessments.bind("<<TreeviewSelect>>", OnDoubleClick)

这段代码给了我&#39; I001&#39;如果我点击第一个项目,&#39; I002&#39;当我点击第二个; id假设这些是树中的列值,但对我来说仍然无用

2 个答案:

答案 0 :(得分:1)

您可以使用窗口小部件的selection方法获取所选项目的列表。它将返回项ID列表。您可以使用item方法获取有关每个项目的信息。

例如:

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.on_tree_select)

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

        self.root.mainloop()

    def on_tree_select(self, event):
        print("selected items:")
        for item in self.tree.selection():
            item_text = self.tree.item(item,"text")
            print(item_text)

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

答案 1 :(得分:0)

我也尝试过此方法来检索其中一列中的 ID 以在另一个函数中使用。我注意到在选择多个元素时,它们返回与上次选择的元素相同的 ID,同时进行鼠标点击和 SHIFT。打印到控制台时,通过鼠标单击和 CTRL 一次选择一个。

我还发现要将输出从 ID 更改为另一列,请更改方括号内的值。根据需要将其与上述答案结合起来。为了给出我的实现的上下文,我使用从下面的代码返回的 ID 来查询数据库以检索我想要的文本,然后将其输出到另一个框架或文本框小部件中。

    def db_reader_selector(self, event):
        return print(self.db_reader.selection()[0])