当前位置: 代码迷 >> 综合 >> 使用python的tkinter编写一个界面,例子如下:能够通过xml标准库读写xml文件:country.xml中指定国家的rank和year属性。
  详细解决方案

使用python的tkinter编写一个界面,例子如下:能够通过xml标准库读写xml文件:country.xml中指定国家的rank和year属性。

热度:85   发布时间:2024-02-22 06:45:57.0
country.xml结构如下:
<data><country name="Panama"><rank>67</rank><year>20142</year><gdppc>13600</gdppc><neighbor direction="W" name="Costa Rica" /><neighbor direction="E" name="Colombia" />
</country>
</data>

思路:将解析xml文件的代码封装为类,注意界面的布局情况,可以使用Label和Entry等界面组件的grid函数。

import tkinter as tk
import xml.etree.ElementTree as ETclass App:"""

  点击get按钮时

       根据用户输入的国家名判断是否时xml文件里面存在的name,若是则返回行营的rank和year值

    点击set按钮时

       将用户输入的数据按原格式存入xml文件

  def __init__(self, root):# 基本界面self.root = root# 所需组件self.zujian()def zujian(self):# 用标签label存放固定的数据,用文本框entry存放可变数据,并用grid固定他们的位置# set和get用按钮button来创建,再用bind设置他们的响应机制# 国家name,tk.Label(self.root, text="country:", height=1,width=10).grid(row=0, column=0)self.e1 = tk.StringVar()self.e11 = tk.Entry(self.root, width=50, textvariable=self.e1)self.e11.grid(row=0, column=1)# ranktk.Label(self.root, text="rank:", height=1,width=10).grid(row=1, column=0)self.e2 = tk.IntVar()self.e22 = tk.Entry(self.root, width=50, textvariable=self.e2)self.e22.grid(row=1, column=1)# yeartk.Label(self.root, text="year:", height=1,width=10).grid(row=2, column=0)self.e3 = tk.IntVar()self.e33 = tk.Entry(self.root, width=50, textvariable=self.e3)self.e33.grid(row=2, column=1)# getb = tk.Button(root, text="get", height=1, width=15)b.grid(row=3, column=0)b.bind("<Button-1>", self.click)# setc = tk.Button(root, text="set", height=1, width=15)c.grid(row=3, column=1)c.bind("<Button-1>", self.clean)def click(self, event):# 点击get按钮的响应机制tree = ET.parse('zuoye/country.xml')  # 创建xml树root1 = tree.getroot()    # 得到树根for country in root1.findall('country'):  # 循环遍历子节点country# 判断name是否和用户输入的一致,若一致则输出他们的rank和year的值if country.get('name') == self.e11.get():   # 子节点下属性name的值self.e1.set(country.get('name'))self.e2.set(country.find('rank').text)  # 子节点下节点rank的值self.e3.set(country.find('year').text)def clean(self, event):# 点击set按钮的响应机制# 写入xmltree = ET.parse('zuoye/country.xml')  # 创建xml树root1 = tree.getroot()    # 得到树根# 创建新的子节点countrynew = ET.Element('country', {'name': self.e11.get()})ranknew = ET.SubElement(countrynew, 'rank')   # 子节点下节点rankranknew.text = self.e22.get()yearnew = ET.SubElement(countrynew, 'year')yearnew.text = self.e33.get()# 向根节点添加新的子节点,可以使用append方法添加子节点root1.append(countrynew)# 写入tree.write('zuoye/country.xml', encoding="utf-8", xml_declaration=True)root = tk.Tk()
root.title("XML")
App(root)
root.mainloop()

 结果:

输入name后:

点击get后:

填入数据:

点击set后:

 

  相关解决方案