【问题标题】:Is it possible to select multiple rows in a treeview widget?是否可以在树视图小部件中选择多行?
【发布时间】:2019-06-02 09:05:13
【问题描述】:

是否可以在树视图小部件中选择多行?此外,您如何获取输入/选定的行。

这是我创建的树视图,但我无法同时选择两行。

如果这是不可能的,他们是 tkinter 或 ttk 中的一个小部件,它允许这样做吗?

【问题讨论】:

    标签: python tkinter treeview ttk


    【解决方案1】:

    是的,可以使用selection() 方法获取所选项目的元组。获取元组后,您可以使用 item() 方法访问每个项目。这是一个例子。

    附:在代码中,通过按 Ctrl 选择多个项目并单击行,然后按 Enter

    import tkinter as tk
    import tkinter.ttk
    
    def select():
        curItems = tree.selection()
        tk.Label(root, text="\n".join([str(tree.item(i)['values']) for i in curItems])).pack()
    
    root = tk.Tk()
    tree = tkinter.ttk.Treeview(root, height=4)
    
    tree['show'] = 'headings'
    tree['columns'] = ('Badge Name', 'Requirement', 'Cost', 'Difficulty')
    tree.heading("#1", text='Badge Name', anchor='w')
    tree.column("#1", stretch="no")
    tree.heading("#2", text='Requirement', anchor='w')
    tree.column("#2", stretch="no")
    tree.heading("#3", text='Cost', anchor='w')
    tree.column("#3", stretch="no")
    tree.heading("#4", text='Difficulty', anchor='w')
    tree.column("#4", stretch="no")
    tree.pack()
    
    tree.insert("", "end", values=["IT Badge", "Track Computer", "$1.50", "2"])
    tree.insert("", "end", values=["Selfless Badge", "Track Yourself", "$100.50", "10"])
    tree.insert("", "end", values=["Tracking Badge", "Track Animal", "$4.50", "7"])
    
    tree.bind("<Return>", lambda e: select())
    
    root.mainloop()

    【讨论】:

    • 我似乎无法在树形视图中选择多行。信息确实会在按下输入时提交,并且确实出现在 tkinter 窗口上。
    • @LyraOrwell 您可以通过按 Ctrl 然后单击行来选择多行。
    • 谢谢!抱歉,我不知道,也许您应该将其添加到您的答案中。只适合像我这样的人。
    • @LyraOrwell 完成。感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多