pyqt5 读取一个两列的xml,并以treeweight的形式展示,完整的demo
时间: 2024-11-20 09:44:01 浏览: 4
一个用pyqt5做的拼图小游戏.7z
5星 · 资源好评率100%
PyQt5是一个用于Python的应用程序开发的框架,它基于Qt库。如果你想用PyQt5读取XML文件并以树形结构显示,可以使用`PyQt5.QtWidgets.QTreeWidget`结合`ElementTree`库来处理XML。下面是一个简单的示例,展示了如何读取两列数据的XML,并将其添加到QTreeWidget中:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeView, QTreeWidgetItem, QVBoxLayout
from PyQt5.QtGui import QIcon
import xml.etree.ElementTree as ET
# 示例XML文件内容
xml_data = '''
<root>
<row column1="Item1" column2="Value1"/>
<row column1="Item2" column2="Value2"/>
</root>
'''
class XMLReader(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('PyQt5 XML Tree Viewer')
self.setGeometry(100, 100, 400, 300)
# 创建QTreeWidget
self.tree_view = QTreeView()
self.setCentralWidget(self.tree_view)
# 解析XML
root = ET.fromstring(xml_data)
self.parse_xml(root, self.tree_view.invisibleRootItem())
def parse_xml(self, element, parent_item):
item = QTreeWidgetItem(parent_item, [str(element.get('column1')), str(element.get('column2'))])
for child in element:
self.parse_xml(child, item)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = XMLReader()
window.show()
sys.exit(app.exec_())
```
在这个例子中,首先导入需要的模块,然后定义一个窗体类`XMLReader`,在初始化UI时创建一个`QTreeView`。`parse_xml`函数递归地遍历XML元素,将每行数据作为新的树节点添加到父节点下。
运行这个代码,你会看到一个窗口,其中包含了XML文件的两列内容,以树状结构展示。
阅读全文