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

新手上路,请多包涵

我看过几篇关于这个的帖子,他们做了以下事情

-我得到的输出是空白的

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

- 完全没有输出

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

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

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

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

原文由 Ryan Mansuri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以使用小部件的 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()

原文由 Bryan Oakley 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是一段非常简单的代码,我相信它可以回答“如何从选定的 Treeview 项目中获取值:”这个问题。树有列“MTD”和“YTD”。树检索到的“项目”。选择( ) call 是一个字符串元组,第一个值是所选项目的 iid。这个值被传递给 set 方法,连同您要检索的列值的名称。所有这些看起来都非常违反直觉我,但它有效 “

import tkinter.ttk as ttk if __name__ == '__main__': def tree_select(event): tree: ttk.Treeview = event.widget item = tree.selection() mtd_var.set(tree.set(item[0], 'MTD')) ytd_var.set(tree.set(item[0], 'YTD')) pass iid_map: dict[str, str] = {} root = tk.Tk() ttk.Label(master=root, text='MTD', width=4, anchor=tk.E).grid(column=0, row=0, padx=5, pady=5) mtd_var = tk.StringVar() mtd_entry = ttk.Entry(master=root, textvariable=mtd_var, width=10) mtd_entry.grid(column=1, row=0, padx=5, pady=5, sticky=tk.W) ttk.Label(master=root, text='YTD', width=4, anchor=tk.E).grid(column=2, row=0, padx=5, pady=5) ytd_var = tk.StringVar() ytd_entry = ttk.Entry(master=root, textvariable=ytd_var, width=10) ytd_entry.grid(column=3, row=0, padx=5, pady=5, sticky=tk.W) tree_root = ttk.Treeview(master=root, columns=('MTD', 'YTD')) tree_root.column('MTD', width=30) tree_root.heading('MTD', text='Month to Date', anchor=tk.E) tree_root.column('YTD', width=30) tree_root.heading('YTD', text='Year to Date', anchor=tk.E) iid = tree_root.insert(parent='', index='end', text='Branch One', open=False) tree_root.insert(parent=iid, index='end', text='Item 0', values=(100, 1500), tags=('detail',)) iid = tree_root.insert(parent='', index='end', text='Branch Two', open=True) tree_root.insert(parent=iid, index='end', text='Item 1', values=(250, 12000), tags=('detail',)) tree_root.insert(parent=iid, index=0, text='Item 0') tree_root.grid(column=0, row=1, padx=5, pady=5, columnspan=4) tree_root.insert(parent=iid, index=1, text='Item 0.5', values=(100, 150)) tree_root.bind('<<TreeviewSelect>>', tree_select) root.mainloop()

原文由 stroudcuster 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题