pyhon 版本 3.11.0
支持遍历子节点
遍历方法:
def traverse_treeview(tree:ttk.Treeview, child=None):
items = tree.get_children(child)
for item in items:
print(tree.item(item)["values"])
traverse_treeview(tree, item)
示例代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
treeview = ttk.Treeview(
root,
selectmode="browse",
columns=(1, 2),
height=10,
show=" headings"
)
treeview.pack(expand=True, fill="both")
# Treeview columns
treeview.column("#0", anchor="w", width=120)
treeview.column(1, anchor="w", width=120)
treeview.column(2, anchor="w", width=120)
# Treeview headings
treeview.heading("#0", text="Column 1", anchor="center")
treeview.heading(1, text="Column 2", anchor="center")
treeview.heading(2, text="Column 3", anchor="center")
# Define treeview data
treeview_data = [
("", 1, "Parent", ("Item 1", "Value 1")),
(1, 2, "Child", ("Subitem 1.1", "Value 1.1")),
(1, 3, "Child", ("Subitem 1.2", "Value 1.2")),
(1, 4, "Child", ("Subitem 1.3", "Value 1.3")),
(1, 5, "Child", ("Subitem 1.4", "Value 1.4")),
("", 6, "Parent", ("Item 2", "Value 2")),
(6, 7, "Child", ("Subitem 2.1", "Value 2.1")),
(6, 8, "Sub-parent", ("Subitem 2.2", "Value 2.2")),
(8, 9, "Child", ("Subitem 2.2.1", "Value 2.2.1")),
(8, 10, "Child", ("Subitem 2.2.2", "Value 2.2.2")),
(8, 11, "Child", ("Subitem 2.2.3", "Value 2.2.3")),
(6, 12, "Child", ("Subitem 2.3", "Value 2.3")),
(6, 13, "Child", ("Subitem 2.4", "Value 2.4")),
("", 14, "Parent", ("Item 3", "Value 3")),
(14, 15, "Child", ("Subitem 3.1", "Value 3.1")),
(14, 16, "Child", ("Subitem 3.2", "Value 3.2")),
(14, 17, "Child", ("Subitem 3.3", "Value 3.3")),
(14, 18, "Child", ("Subitem 3.4", "Value 3.4")),
("", 19, "Parent", ("Item 4", "Value 4")),
(19, 20, "Child", ("Subitem 4.1", "Value 4.1")),
(19, 21, "Sub-parent", ("Subitem 4.2", "Value 4.2")),
(21, 22, "Child", ("Subitem 4.2.1", "Value 4.2.1")),
(21, 23, "Child", ("Subitem 4.2.2", "Value 4.2.2")),
(21, 24, "Child", ("Subitem 4.2.3", "Value 4.2.3")),
(19, 25, "Child", ("Subitem 4.3", "Value 4.3")),
]
# Insert treeview data
for item in treeview_data:
treeview.insert(
parent=item[0], index="end", iid=item[1], text=item[2], values=item[3]
)
if item[0] == "" or item[1] in {8, 21}:
treeview.item(item[1], open=True) # Open parents
def traverse_treeview(tree: ttk.Treeview, child=None):
items = tree.get_children(child)
for item in items:
print(tree.item(item)["values"])
traverse_treeview(tree, item)
traverse_treeview(treeview)
root.mainloop()
示例输出:
PS E:\5G-arm\源码\python> & C:/Python311/python.exe e:/5G-arm/源码/python/test.py
['Item 1', 'Value 1']
['Subitem 1.1', 'Value 1.1']
['Subitem 1.2', 'Value 1.2']
['Subitem 1.3', 'Value 1.3']
['Subitem 1.4', 'Value 1.4']
['Item 2', 'Value 2']
['Subitem 2.1', 'Value 2.1']
['Subitem 2.2', 'Value 2.2']
['Subitem 2.2.1', 'Value 2.2.1']
['Subitem 2.2.2', 'Value 2.2.2']
['Subitem 2.2.3', 'Value 2.2.3']
['Subitem 2.3', 'Value 2.3']
['Subitem 2.4', 'Value 2.4']
['Item 3', 'Value 3']
['Subitem 3.1', 'Value 3.1']
['Subitem 3.2', 'Value 3.2']
['Subitem 3.3', 'Value 3.3']
['Subitem 3.4', 'Value 3.4']
['Item 4', 'Value 4']
['Subitem 4.1', 'Value 4.1']
['Subitem 4.2', 'Value 4.2']
['Subitem 4.2.1', 'Value 4.2.1']
['Subitem 4.2.2', 'Value 4.2.2']
['Subitem 4.2.3', 'Value 4.2.3']
['Subitem 4.3', 'Value 4.3']
PS E:\5G-arm\源码\python>