Python Tkinter Treeview 组件解析与 INI 文件可视化实现
本文深入解析 Python Tkinter 中 ttk 模块的 Treeview 组件,介绍其树形与表格混合显示特性及核心 API。通过 configparser 模块读取 INI 文件,利用 Treeview 的 insert 和 heading 方法,实现了对配置文件节、键、值的层级化可视化展示,为 Python GUI 开发提供实用参考。
Treeview 组件基础与特性
前言:
Tkinter 模块中的 Treeview 组件功能类似于 Delphi 中的 treelist 控件,但它兼具树形控件和表格控件的特性。尽管其功能丰富度可能不及 Delphi 或 WinForms 中的对应控件,但在 Tkinter 生态中,它仍属于功能较为复杂且应用广泛的核心组件之一。
Treeview 组件归属于 ttk 模块,该模块自 Tk 8.5 版本起引入。若 Python 未基于 Tk 8.5 编译,只要系统中安装了 Tile 库,依然可以访问此模块。Treeview 支持以层次结构展示数据项,下图为 Excel 制作的简易示意图,左侧可视为树控件区域,右侧为表格区域,每个数据条目占据一行,横跨这两个区域。通过 show 属性可控制显示模式:值为 'tree' 时仅显示树结构,值为 'headings' 时默认仅显示表头(表格),值为 'tree headings' 时则同时显示两者,默认行为为显示全部。在引用列时,使用 '#0' 代表树控件所在列,其他列可通过 '#1' 至 '#N' 的数字索引引用,也可直接使用列名。向 Treeview 插入数据行时,通过 text 属性设置树控件列的值,通过 values 参数设置其他列的值。

核心函数说明
本文主要涉及的 Treeview 组件关键函数如下:
| 序号 | 函数名 | 函数说明 |
|---|---|---|
| 1 | Treeview () | Treeview 组件的创建函数,可以同时指定父控件、columns、displaycolumns、height、padding、selectmode、show等属性,详细介绍请见参考 |
| 2 | heading | 查询或修改某列的标题,可以设置列标题、列图片等 |
| 3 | column | 查询或修改列 column 的属性 |
| 4 | insert | 函数形式为insert(parent, index, iid=None, **kw),用于插入一条新的数据条目。如果parent是另一歌数据条目的标识,则新条目为另一数据条目的下级。index 是整数或“end”,指明在父项的子项列表中的插入位置 |
序号函数名函数说明1Treeview ()Treeview 组件的创建函数,可同时指定父控件、columns、displaycolumns、height、padding、selectmode、show 等属性,详细用法请参阅官方参考文档。
INI 文件可视化实现
INI 文件通常呈现两层结构:第一层为“节”(Section),第二层为“键值对”(Key-Value Pair)。本文旨在利用 Treeview 组件直观展示 INI 文件的内容结构。
完整代码及程序运行效果如下所示:
# coding=gbk
import tkinter as tk
from tkinter import ttk
import configparser
from tkinter.filedialog import askopenfilename
def BrowseDri():
txtFilePath.set(askopenfilename())
tree = ttk.Treeview(window, height = 15, selectmode = "extended",columns=('key', 'value'), show="tree headings", displaycolumns="#all")
tree.grid(row=1,column=1)
tree.heading("#0", text="节", anchor=tk.W)
tree.heading('key', text="键", anchor=tk.W)
tree.heading('value', text="值", anchor=tk.W)
tree.column('#0', width=100)
tree.column('key', width=200)
tree.column('value', width=100)
stu_root = tree.insert("", tk.END, text="ini文件",open=True)
cfg = configparser.ConfigParser()
cfg.read(txtFilePath.get())
print('readed ini file')
sections = cfg.sections()
for sec in sections:
print(sec)
node = tree.insert(stu_root, tk.END, text=sec,open=True)
for item in cfg.items(sec):
print(item)
tree.insert(node,tk.END,text='',values=(item[0],item[1]))
window=tk.Tk()
window.title('浏览ini文件夹')
window.geometry('600x400')
tk.Button(window,text='选择文件',command=BrowseDri).grid(row=0,column=0)
txtFilePath=tk.StringVar()
tk.Entry(window,textvariable=txtFilePath).grid(row=0,column=1)
tk.Label(window,text='文件内容').grid(row=1,column=0)
window.mainloop()
到此这篇关于使用 Python 中 Tkinter 模块的 Treeview 组件显示 INI 文件操作的文章就介绍到这了,更多相关 Python 显示 INI 文件内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









