采用Python中Tkinter模块的Treeview 组件显示xml文件

  xml内容属于层次结构,也可以是Treeview组件显示内容,本文仿照《采用Python中Tkinter模块的Treeview 组件显示ini文件》,学习使用Treeview 组件显示xml文件内容。
  本文中采用的主要功能点包括:

  • 选择文件:采用tkinter.filedialog.askopenfilename选择本地文件;
  • 解析xml文件:采用xml.etree.ElementTree模块解析xml文件,通过调用ShowSubElement函数递归解析每个元素的内容、属性及下级节点。;
  • Treeview 组件:将解析出的每个元素的内容、属性及下级节点按层次结构创建数据记录、指定父子节点,由于每个元素的属性不同,为便于展示,按键值形式纵向展示节点的内容和属性列表。

  全部代码及运行效果如下所示:

# coding=gbkimport tkinter as tk
from tkinter import ttk
import xml.etree.ElementTree as ET
from tkinter.filedialog import askopenfilenamedef ShowSubElement(tree,curNode,curElement,level):node = tree.insert(curNode, tk.END, text='Level'+str(level)+':'+curElement.tag,open=True)eleText=curElement.text    if not eleText is None and len(eleText)>0:tree.insert(node,tk.END,text='',values=('内容','',eleText))for attr in curElement.attrib:print(attr)tree.insert(node,tk.END,text='',values=('属性',attr,curElement.get(attr)))print(level,' tag:',curElement.tag,'attribute:', curElement.attrib,'text:',curElement.text)for child in curElement:ShowSubElement(tree,node,child,level+1)def BrowseDri():txtFilePath.set(askopenfilename())tree = ttk.Treeview(window, height = 15, selectmode = "extended",columns=('type','key', 'value'), show="tree headings", displaycolumns="#all")tree.grid(row=1,column=1)tree.heading("#0", text="元素", anchor=tk.W)tree.heading('type', text="类型", anchor=tk.W)tree.heading('key', text="名称", anchor=tk.W)tree.heading('value', text="值", anchor=tk.W)tree.column('#0', width=150)tree.column('type', width=100)tree.column('key', width=100)tree.column('value', width=100)treeviewroot = tree.insert("", tk.END, text="xml文件",open=True)xmltree = ET.parse(txtFilePath.get())level=1root = xmltree.getroot()ShowSubElement(tree,treeviewroot,root,level)print('readed xml file')window=tk.Tk()
window.title('浏览xml文件夹')
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() 

在这里插入图片描述

参考文献:
[1]https://docs.python.org/3/library/tkinter.ttk.html?highlight=treeview#treeview
[2]https://blog.csdn.net/m0_59485658/article/details/123334710
[3]https://www.cnblogs.com/akxmhd/p/15371797.html
[4]https://blog.csdn.net/weixin_45558166/article/details/122079072


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部