Python tkinter 树形列表控件(Treeview)的使用方法

  • Post category:Python

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) 的使用方法,希望对你有帮助。