Я хочу, чтобы пользователь выбирал несколько узлов из разных веток дерева Tkinter. Чтобы я мог продолжить процесс, я должен знать родительскую ветвь каждого выбора.
- Когда я выбираю только один узел, я могу получить родительский идентификатор, используя приведенный ниже код.
- Когда я выбираю несколько узлов (нажимая клавишу ctrl), я просто получаю родительскийузел первого выбора
Как мне получить родительский узел для всех выборов, выполненных одновременно?
Вот мой рабочий код:
import ttk
import Tkinter as tk
def select():
item_iid = tree.selection()[0]
parent_iid = tree.parent(item_iid)
node = tree.item(parent_iid)['text']
print node
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()
Текущий вывод:
![enter image description here](https://i.stack.imgur.com/009vQ.jpg)
Может отображать имя родителя при выборе только одного узла
Когда выполняется множественный выбор родительского элемента только первого отображаемого, ожидаяимя родителя для каждого выбранного узла.
Отображается Branch1, т.е. только для первого выбора:
![enter image description here](https://i.stack.imgur.com/IzJYH.jpg)