Select Tkinter 树视图中的多个条目无需按 ctrl 键
Select multiple entries in Tkinter treeview without pressing ctrl key
我正在尝试 select 来自 Tkinter 树视图的多个条目。我使用 selectmode = extended 相同(使用 ctrl+enter 键)。但是,一旦我尝试在树中打开新分支(按下 ctrl),我就无法打开,如果我不按 ctrl 就这样做,那么来自分支 1 的 selections 就会消失。
因此,我正在尝试通过其他方式 select 从 Tkinter 树(来自不同分支)中获取多个节点,而无需按 ctrl 键。 (即记住我的鼠标 selections 或某些复选框或任何其他建议)
- 这是一个工作代码示例,它适用于使用 ctrl 键在不同分支中的多个 selection,但我需要多个 selection 用于不同分支中的 selecting 节点而无需按ctrl as using this 我无法在 selecting 第一个分支后打开新分支,如果已发布的节点打开但选择消失。
代码:
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()
预期: Select 来自不同分支的多个节点,无需按 ctrl 键
您需要做的第一件事是将 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)
我正在尝试 select 来自 Tkinter 树视图的多个条目。我使用 selectmode = extended 相同(使用 ctrl+enter 键)。但是,一旦我尝试在树中打开新分支(按下 ctrl),我就无法打开,如果我不按 ctrl 就这样做,那么来自分支 1 的 selections 就会消失。
因此,我正在尝试通过其他方式 select 从 Tkinter 树(来自不同分支)中获取多个节点,而无需按 ctrl 键。 (即记住我的鼠标 selections 或某些复选框或任何其他建议)
- 这是一个工作代码示例,它适用于使用 ctrl 键在不同分支中的多个 selection,但我需要多个 selection 用于不同分支中的 selecting 节点而无需按ctrl as using this 我无法在 selecting 第一个分支后打开新分支,如果已发布的节点打开但选择消失。
代码:
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()
预期: Select 来自不同分支的多个节点,无需按 ctrl 键
您需要做的第一件事是将 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)