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

How to get the value of a selected treeview item?

我查看了几篇关于此的帖子,他们做了以下工作

-我得到的输出是空白的

-我得到的输出是 id,这几乎没用,除非有人能告诉我如何操作它

-完全没有输出

我只是希望能够单击树视图中的一个项目,并立即获得我刚刚单击的文本

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

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

如果我点击第一个项目,此代码会给我 'I001',当我点击第二个项目时,我会 'I002'; id 假设这些是树中的列值,但对我来说仍然没用

您可以使用小部件的 selection 方法获取所选项目的列表。它将 return 一个项目 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()

我也试过在其中一列中检索 ID 以用于另一个函数。我注意到在选择多个元素时,它们 return 与在结合 SHIFT 进行鼠标点击时最后选择的 ID 相同。打印到控制台时,使用鼠标单击和 CTRL 一次选择一个。

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

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