PythonTkinterTreeview组件核心方法详解与实战

作者:

更新于
文章目录
  • Treeview是Tkinter中 ttk 模块的一个控件,用以展示树状结构或表格数据。Treeview 在 Tk 中没有控件,所以必须导入 tkinter.ttk() 。
  • 注:由于tkinter是Python IDLE 自带的模块,因此无需pip安装。 from tkinter import * from tkinter import ttk
  • Treeview 支持事件绑定,动态更新数据等功能。
  • 目录
    • 一、Treeview的基本概念
    • 二、导入tkinter,ttk
    • 三、Treeview 的基本使用
      • 1.创建 Treeview 对象
      • 2.添加数据
      • 3.表格制作
        • 制作表格与普通树状结构的不同之处:
    • 三、Treeview 的高级功能
      • 1.事件绑定
        • 2.动态更新数据
        • 四、完整源码分享
          • 1.树状员工列表
            • 2.学生成绩表格显示

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

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

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

            from tkinter import *
            from tkinter import ttk

            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()

            运行结果:

            #添加根节点,#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:指定项目的标签。

            •效果展示:

            由于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 支持事件绑定从而实现与用户的交互。例如,绑定双击事件以显示选中的数据。( 注:代码为表格制作的后续 

            #绑定双击事件,以显示所选中的数据
            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)

            运行结果:

            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))

            运行结果:

            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()

            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中Tkinter模块的Treeview 组件显示ini文件操作
            • python tkinter控件treeview的数据列表显示的实现示例
            • Python tkinter 树形列表控件(Treeview)的使用方法
            • 详谈Python 窗体(tkinter)表格数据(Treeview)
            • 对Python 窗体(tkinter)树状数据(Treeview)详解

            站内搜索