我正在尝试从Tkinter树视图中选择多个条目。我使用 selectmode =扩展相同(使用Ctrl + Enter键)。但是,一旦尝试在树中打开新分支(按ctrl键),我将无法打开,如果不按ctrl进行同样的操作,我从分支1中的选择就会消失。
因此,我正在尝试找到其他方法来从Tkinter树中选择多个节点(来自不同的分支),而无需按ctrl键。 (即记住我的鼠标选择或一些复选框或任何其他建议)
代码:
import ttk
import Tkinter as tk
def select():
for i in tree.selection():
item_iid = i
print "".join([str(tree.item(i)['text'])])# for i in curItems])
root = tk.Tk()
tree = ttk.Treeview(root,show="tree")#, selectmode=EXTENDED)
tree.config(columns=("col1"))
#SUb treeview
style = ttk.Style(root)
style.configure("Treeview")
tree.configure(style="Treeview")
tree.insert("", "0", "item1", text="Branch1",)
tree.insert("", "1", "item2", text="Branch2")
#sub tree using item attribute to achieve that
tree.insert("item1", "1", text="FRED")
tree.insert("item1", "1", text="MAVIS")
tree.insert("item1", "1", text="BRIGHT")
tree.insert("item2", "2", text="SOME")
tree.insert("item2", "2", text="NODES")
tree.insert("item2", "2", text="HERE")
tree.pack(fill=tk.BOTH, expand=True)
tree.bind("<Return>", lambda e: select())
root.mainloop()
预期:无需按Ctrl键即可从不同分支中选择多个节点
答案 0 :(得分:0)
您需要做的第一件事是将selectmode
设置为None:
tree = ttk.Treeview(root,show="tree", selectmode="none")
从这里开始,您可以自己处理选择事件。
现在修改您的select
函数以对焦点更改作出反应:
def select(event=None):
tree.selection_toggle(tree.focus())
print tree.selection()
最后,使用鼠标单击作为示例,将其绑定到您喜欢的键上:
tree.bind("<ButtonRelease-1>", select)