Pythontkinter 是 Python 的一个 GUI 库,提供了丰富的控件,其中 Treeview 是用于显示树形表格的控件。下面详细讲解 Pythontkinter 树形列表控件(Treeview) 的使用方法。
创建 Treeview 控件
创建 Treeview 控件需要先导入 ttk,然后使用 ttk.Treeview() 函数创建一个 Treeview 对象,最后将 Treeview 对象放置到希望显示的容器中。
from tkinter import *
from tkinter import ttk
root = Tk()
treeview = ttk.Treeview(root)
treeview.pack()
添加列
Treeview 控件可以添加多列,每列的显示标题和宽度都可以自定义。使用 Treeview 对象的 heading() 方法添加列,使用 column() 方法指定列的宽度。
treeview['columns'] = ('Name', 'ID', 'Gender')
treeview.column('Name', width=100)
treeview.column('ID', width=100)
treeview.column('Gender', width=100)
treeview.heading('Name', text='姓名')
treeview.heading('ID', text='学号')
treeview.heading('Gender', text='性别')
添加节点
Treeview 控件中的节点可以分为两种,一种是根节点,一种是子节点。根节点没有父节点,子节点必须有一个父节点。使用 Treeview 对象的 insert() 方法添加节点,根据需要指定节点的父节点ID,节点的文本和图标等属性。
添加根节点
treeview.insert('', 0, text='张三', values=('001', '男'))
treeview.insert('', 1, text='李四', values=('002', '女'))
添加子节点
treeitem = treeview.insert('', 2, text='小明', values=('003', '男'))
treeview.insert(treeitem, 0, text='高数', values=('80'))
treeview.insert(treeitem, 1, text='英语', values=('90'))
绑定事件
Treeview 控件可以绑定诸如单击、双击等事件,以便对节点进行操作。使用 Treeview 对象的 bind() 方法绑定事件,然后编写事件处理函数。
def treeviewclick(event):
item = treeview.selection()[0]
print("你选择了:", treeview.item(item, 'text'))
treeview.bind("<Double-1>", treeviewclick)
示例说明
下面演示两个例子,一个是添加一个有层级关系的树形列表,一个是在 Treeview 控件中添加复选框。
添加一个有层级关系的树形列表
root = Tk()
treeview = ttk.Treeview(root)
treeview['columns'] = ('Name', 'Email')
treeview.column('Name', width=120)
treeview.column('Email', width=160)
treeview.heading('Name', text='姓名')
treeview.heading('Email', text='邮箱')
treeview.insert('', 0, text='管理层', values=('管理人员', ''))
treeview.insert('', 1, text='客服部', values=('客服人员', ''))
treeview.insert('', 2, text='财务部', values=('财务人员', ''))
# 管理层的子节点
treeview.insert('',
0,
text='CEO',
values=('Bob', 'bob@example.com'))
treeview.insert('',
1,
text='COO',
values=('John', 'john@example.com'))
# 客服部子节点
treeview.insert('',
2,
text='经理',
values=('Linda', 'linda@example.com'))
treeview.insert('',
3,
text='代理',
values=('Tom', 'tom@example.com'))
# 财务部子节点
treeview.insert('',
4,
text='统计分析',
values=('David', 'david@example.com'))
treeview.pack()
在 Treeview 控件中添加复选框
from tkinter.ttk import *
import tkinter.messagebox as messagebox
root = Tk()
treeview = Treeview(root, columns=['index'])
treeview.pack()
treeview.insert('', 'end', text='Python', values=[1])
treeview.insert('', 'end', text='Java', values=[2])
treeview.insert('', 'end', text='C++', values=[3])
treeview.column('#0', width=100, stretch=NO)
treeview.column('index', anchor=CENTER, width=100)
treeview.heading('#0', text='Language', anchor=W)
treeview.heading('index', text='Index', anchor=CENTER)
def select():
selected_items = treeview.selection()
for item in selected_items:
item_values = treeview.item(item, "values")
messagebox.showinfo(item_values[0], item_values[1])
treeview.bind('<Double-Button>', select)
treeview.selection_set(treeview.get_children())
root.mainloop()
以上就是 Pythontkinter 树形列表控件(Treeview) 的使用方法,希望对你有帮助。