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

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

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

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

# coding=gbk

import tkinter as tk
from tkinter import ttk
import xml.etree.ElementTree as ET
from tkinter.filedialog import askopenfilename

def 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=1
    root = 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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值