【问题标题】:How to get the value of a selected treeview item?如何获取选定树视图项的值?
【发布时间】:2016-04-23 06:54:46
【问题描述】:

我查看了几篇关于此的帖子,他们已经完成了以下操作

-我得到的输出是空白

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

-根本没有输出

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

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

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

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

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

    • 这个可行,但在我的 IDE 中显示警告。如果我删除事件属性,它将不起作用。如果我保留它,它将起作用。但会显示警告(“事件”属性未使用 on_tree_select(self, event))
    • @Evan 你可以替换on_tree_select中的事件参数。
    【解决方案2】:

    我也尝试过这样来检索其中一列中的 ID 以用于另一个函数。我注意到选择多个元素时,它们会在执行MouseClicks与Shift结合时选择相同的ID。打印到控制台时,使用鼠标单击和 CTRL 一次选择一个。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 2019-09-04
      相关资源
      最近更新 更多