Python Tkinter Treeview组件核心方法详解与实战

 更新时间:2025年11月06日 11:30:10   作者:月夜戟霜  
Treeview是Tkinter中ttk模块的一个控件,用以展示树状结构或表格数据,Treeview 在 Tk 中没有控件,所以必须导入 tkinter.ttk(),本文将讲述Treeview的核心方法,感兴趣的朋友跟随小编一起看看吧

        在Python Tkinter模块中,Treeview是在应用程序中实现树状结构或表格形式的数据。它不仅能展示层级结构,还支持增删改查等操作。本文将讲述Treeview的核心方法。

一、Treeview的基本概念

Treeview是Tkinter中 ttk 模块的一个控件,用以展示树状结构或表格数据。Treeview 在 Tk 中没有控件,所以必须导入 tkinter.ttk()

二、导入tkinter,ttk

注:由于tkinter是Python IDLE 自带的模块,因此无需pip安装。

from tkinter import *
from tkinter import ttk

三、Treeview 的基本使用

1.创建 Treeview 对象

from tkinter import *
from tkinter import ttk
# 创建主窗口
root = Tk()
root.title("Treeview Example")
root.geometry("300x300")
# 创建 Treeview 对象
tree = ttk.Treeview(root, column=("mid", "name" , "salary"),show="tree headings")
tree.pack(fill="both", expand = True)
#设置列标题
tree.heading("mid", text = "ID编号")
tree.heading("name" , text = "姓名")
tree.heading("salary" , text = "工资")
#设置列宽
tree.column("mid", width = 30, anchor = "center")
tree.column("name", width=80,anchor = "center")
tree.column("salary", width=30,anchor = "center")
root.mainloop()

运行结果:

2.添加数据

#添加根节点,#0是Treeview预留的第一空列的标识,用户可以设置它
tree.column("#0", width=20, anchor="w")
level_a = tree.insert("", "end",text="员工")
#添加子节点
tree.insert(level_a, "end", values=("01","Tom",25000))
tree.insert(level_a, "end", values=("02","Jerry",10000))
tree.insert(level_a, "end",values=("03","James",16000))

•在添加节点是,使用的是 insert() 方法,该方法有3个参数:

       使用的方法: insert(parent, position, text                                                                                       

        -  parent:空字符串表示新项是父项。""

        -  position:"end"指示小组件将项目放置在树的末尾。

        -  text:指定项目的标签。

•效果展示:

3.表格制作

由于Tkinter没有直接开发表格的控件,因此Treeview可以很好的进行表格开发。

from tkinter import *
from tkinter import ttk
# 创建主窗口
root = Tk()
root.title("Treeview Example")
root.geometry("300x300")
# 创建 Treeview 对象
tree = ttk.Treeview(root, column=("id", "name" , "academic_report"),show="headings")
tree.pack(fill="both", expand = True)
#设置列标题
tree.heading("id", text = "学号")
tree.heading("name" , text = "姓名")
tree.heading("academic_report" , text = "成绩")
#设置列宽
tree.column("id", width = 30, anchor = "center")
tree.column("name", width=80,anchor = "center")
tree.column("academic_report", width=30,anchor = "center")
#添加节点,每个节点都是父节点
tree.insert('', "end", values=("01","Tom",702))
tree.insert('', "end", values=("02","Jerry",673))
tree.insert('', "end",values=("03","James",624))
tree.insert("","end",values=("04","Alice",608))
root.mainloop()

制作表格与普通树状结构的不同之处:

  1. ttk,Treeview() 中的 show="tree headings" 改为 show = "headings" ,这将忽略 Treeview 创建的第一空列(即 #0 );
  2. 调用 tree.insert() 方法时,第一个参数一直是 "" ,因此表格中每一项都是父项,无子项。

运行结果:

三、Treeview 的高级功能

Treeview 支持事件绑定动态更新数据等功能。

1.事件绑定

Treeview 支持事件绑定从而实现与用户的交互。例如,绑定双击事件以显示选中的数据。( 注:代码为表格制作的后续 

#绑定双击事件,以显示所选中的数据
def show_data(event):
        # 获取选中的数据
        selected_item = tree.selection()[0]
        data = tree.item(selected_item, "values")
        print(f"学号:{data[0]}\n姓名:{data[1]}\n成绩{data[2]}")
        print("-"*30)
tree.bind("<Double-1>", show_data)

运行结果:

2.动态更新数据

Treeview 支持动态更新数据。例如,删除某一行或修改某一行:

# 获取数据编号  --->   tree.get_children()方法,返回元组对象
child_list = tree.get_children()
print(child_list)
# 删除对象
delete_item = child_list[3]
tree.delete(delete_item)

删除结果显示:

修改某一行,可以这样操作:

# 修改数据
modified_item = child_list[2]
tree.item(modified_item, values = ("05", "Jack", 523))

运行结果:

四、完整源码分享

1.树状员工列表

from tkinter import *
from tkinter import ttk
# 创建主窗口
root = Tk()
root.title("Treeview Example")
root.geometry("300x300")
# 创建 Treeview 对象
tree = ttk.Treeview(root, column=("mid", "name" , "salary"),show="tree headings")
tree.pack(fill="both", expand = True)
#设置列标题
tree.heading("mid", text = "ID编号")
tree.heading("name" , text = "姓名")
tree.heading("salary" , text = "工资")
#设置列宽
tree.column("mid", width = 30, anchor = "center")
tree.column("name", width=80,anchor = "center")
tree.column("salary", width=30,anchor = "center")
#添加根节点,#0是Treeview预留的第一空列的标识,用户可以设置它
tree.column("#0", width=20, anchor="w")
level_a = tree.insert("", "end",text="员工")
#添加子节点
tree.insert(level_a, "end", values=("01","Tom",25000))
tree.insert(level_a, "end", values=("02","Jerry",10000))
tree.insert(level_a, "end",values=("03","James",16000))
root.mainloop()

2.学生成绩表格显示

from tkinter import *
from tkinter import ttk
# 创建主窗口
root = Tk()
root.title("Treeview Example")
root.geometry("300x300")
# 创建 Treeview 对象
tree = ttk.Treeview(root, column=("id", "name" , "academic_report"),show="headings")
tree.pack(fill="both", expand = True)
#设置列标题
tree.heading("id", text = "学号")
tree.heading("name" , text = "姓名")
tree.heading("academic_report" , text = "成绩")
#设置列宽
tree.column("id", width = 30, anchor = "center")
tree.column("name", width=80,anchor = "center")
tree.column("academic_report", width=30,anchor = "center")
#添加节点,每个节点都是父节点
tree.insert('', "end", values=("01","Tom",702))
tree.insert('', "end", values=("02","Jerry",673))
tree.insert('', "end",values=("03","James",624))
tree.insert("","end",values=("04","Alice",608))
#绑定双击事件,以显示所选中的数据
def show_data(event):
        # 获取选中的数据
        selected_item = tree.selection()[0]
        data = tree.item(selected_item, "values")
        print(f"学号:{data[0]}\n姓名:{data[1]}\n成绩{data[2]}")
        print("-"*30)
tree.bind("<Double-1>", show_data)
# 获取数据编号  --->   tree.get_children()方法,返回元组对象
child_list = tree.get_children()
print(child_list)
# 删除数据
delete_item = child_list[3]
tree.delete(delete_item)
# 修改数据
modified_item = child_list[2]
tree.item(modified_item, values = ("05", "Jack", 523))
root.mainloop()

通过本文的讲解,您应该能够掌握 Treeview 的基本使用方法及其在实际开发中的应用场景。希望本文对您有所帮助!

到此这篇关于Python Tkinter Treeview组件详解与实战的文章就介绍到这了,更多相关Python Tkinter Treeview组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python通过pil模块获得图片exif信息的方法

    python通过pil模块获得图片exif信息的方法

    这篇文章主要介绍了python通过pil模块获得图片exif信息的方法,实例分析了Python中pil模块的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • pytest多文件执行顺序控制详解

    pytest多文件执行顺序控制详解

    默认情况下pytest测试用例的执行顺序是先按照外层后内层(目录下的文件),同层级的包或文件、根据名称、按照ascii码升序执行,文件内的用例根据先后顺序执行,这篇文章主要给大家介绍了关于pytest多文件执行顺序控制的相关资料,需要的朋友可以参考下
    2022-07-07
  • python中日期和时间格式化输出的方法小结

    python中日期和时间格式化输出的方法小结

    这篇文章主要介绍了python中日期和时间格式化输出的方法,实例总结了Python常见的日期与事件操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • 深入讲解Java编程中类的生命周期

    深入讲解Java编程中类的生命周期

    这篇文章主要介绍了深入讲解Java编程中类的生命周期,在带有垃圾回收功能的Java虚拟机上运行的程序中类的生命周期就显得格外重要,需要的朋友可以参考下
    2016-02-02
  • 用python爬取电脑壁纸实例代码

    用python爬取电脑壁纸实例代码

    大家好,本篇文章主要讲的是用python爬取电脑壁纸实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Python实现对字典分别按键(key)和值(value)进行排序的方法分析

    Python实现对字典分别按键(key)和值(value)进行排序的方法分析

    这篇文章主要介绍了Python实现对字典分别按键(key)和值(value)进行排序的方法,结合实例形式分析了Python基于sorted函数及operator库进行字典排序的相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • ZABBIX3.2使用python脚本实现监控报表的方法

    ZABBIX3.2使用python脚本实现监控报表的方法

    今天小编就为大家分享一篇ZABBIX3.2使用python脚本实现监控报表的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Flask类视图的基本用法及高级技巧

    Flask类视图的基本用法及高级技巧

    Flask的类视图提供了一种强大而灵活的方式来构建Web应用的业务逻辑,本文主要介绍了Flask类视图的基本用法及高级技巧,感兴趣的可以了解一下
    2024-01-01
  • Python中的分布式框架Ray的安装与使用教程

    Python中的分布式框架Ray的安装与使用教程

    Ray框架下不仅可以通过conda和Python十分方便的构建一个集群,还可以自动的对分布式任务进行并发处理,且支持GPU分布式任务的提交,本文介绍了基于Python的分布式框架Ray的基本安装与使用,感兴趣的朋友一起看看吧
    2024-08-08
  • 使用python接入微信聊天机器人

    使用python接入微信聊天机器人

    这篇文章主要为大家详细介绍了使用python接入微信聊天机器人,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06

最新评论