tkinter中treeview控件
什么是treeview控件
Tkinter是Python标准GUI库之一,提供了创建窗口和组件的功能。其中的treeview控件是一个用于显示表格式数据的强大工具。可以像Excel那样显示树形结构,包括行和列,可以使用该控件来显示文件列表、数据库内容、目录结构等。
在这篇文章中,我们将详细介绍如何在Tkinter中使用treeview控件,并提供一些示例代码让大家更好地了解如何使用它。
创建基本的treeview控件
首先,我们需要导入Tkinter库,并创建一个主窗口。然后在主窗口中添加一个treeview控件,以下是一个简单的示例代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("TreeView Example")
tree = ttk.Treeview(root)
tree["columns"] = ("column1", "column2")
tree.column("#0", width=0, stretch=tk.NO)
tree.column("column1", width=100, anchor=tk.CENTER)
tree.column("column2", width=100, anchor=tk.CENTER)
tree.heading("#0", text="ID")
tree.heading("column1", text="Name")
tree.heading("column2", text="Age")
tree.pack()
root.mainloop()
运行以上代码,将会在屏幕上显示一个空的treeview控件,其中包括ID、Name和Age三列。可以通过修改代码中的column和heading的参数来改变列数和列名。
向treeview中添加数据
接下来,我们将介绍如何向treeview控件中添加数据。下面的示例代码会在前面创建的基本控件的基础上,向控件中添加几行数据:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("TreeView Example")
tree = ttk.Treeview(root)
tree["columns"] = ("column1", "column2")
tree.column("#0", width=0, stretch=tk.NO)
tree.column("column1", width=100, anchor=tk.CENTER)
tree.column("column2", width=100, anchor=tk.CENTER)
tree.heading("#0", text="ID")
tree.heading("column1", text="Name")
tree.heading("column2", text="Age")
tree.pack()
data = [
("1", "Alice", "25"),
("2", "Bob", "30"),
("3", "Charlie", "22")
]
for d in data:
tree.insert("", tk.END, values=d)
root.mainloop()
运行以上代码,将会在treeview控件中显示三行数据,每行数据包括ID、Name和Age三列。可以通过修改data中的数据来添加更多的行。
向treeview控件中添加父子关系
treeview控件还支持显示父子关系,通过设置item的parent参数来实现。下面的示例代码演示如何在treeview中使用父子关系显示数据:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("TreeView Example")
tree = ttk.Treeview(root)
tree["columns"] = ("column1", "column2")
tree.column("#0", width=0, stretch=tk.NO)
tree.column("column1", width=100, anchor=tk.CENTER)
tree.column("column2", width=100, anchor=tk.CENTER)
tree.heading("#0", text="ID")
tree.heading("column1", text="Name")
tree.heading("column2", text="Age")
tree.pack()
parent1 = tree.insert("", tk.END, text="Parent1", values=("1", "Alice", "25"))
parent2 = tree.insert("", tk.END, text="Parent2", values=("2", "Bob", "30"))
tree.insert(parent1, tk.END, text="Child1", values=("3", "Charlie", "22"))
tree.insert(parent2, tk.END, text="Child2", values=("4", "David", "28"))
root.mainloop()
运行以上代码,将会在treeview控件中显示两个父节点(Parent1和Parent2)和它们的子节点(Child1和Child2)。可以通过修改insert中的参数来添加更多父子关系。
在treeview控件中获取选中数据
有时候我们需要在用户点击treeview控件中的某一行时获取该行的数据。下面的示例代码演示如何获取用户选中的行数据:
import tkinter as tk
from tkinter import ttk
def on_click(event):
item = tree.selection()[0]
values = tree.item(item)["values"]
print(values)
root = tk.Tk()
root.title("TreeView Example")
tree = ttk.Treeview(root)
tree["columns"] = ("column1", "column2")
tree.column("#0", width=0, stretch=tk.NO)
tree.column("column1", width=100, anchor=tk.CENTER)
tree.column("column2", width=100, anchor=tk.CENTER)
tree.heading("#0", text="ID")
tree.heading("column1", text="Name")
tree.heading("column2", text="Age")
tree.pack()
data = [
("1", "Alice", "25"),
("2", "Bob", "30"),
("3", "Charlie", "22")
]
for d in data:
tree.insert("", tk.END, values=d)
tree.bind("<ButtonRelease-1>", on_click)
root.mainloop()
运行以上代码,点击treeview控件的某一行时,将会在控制台输出该行的数据。可以根据实际需求在on_click函数中处理选中行的数据。
总结
通过本文的介绍,我们学习了如何在Tkinter中使用treeview控件来显示表格数据、父子关系以及如何获取用户选中的数据。treeview是Tkinter中非常实用的控件之一,能够帮助我们构建功能强大的GUI应用程序。