pyqt5中双击QTreeView写入xml的完整demo
时间: 2024-11-17 08:28:11 浏览: 20
在PyQt5中,创建一个双击QTreeView并将其内容写入XML文件的示例通常会涉及以下几个步骤:
首先,你需要导入必要的模块,如`QtWidgets`, `QtCore`, 和 `xml.etree.ElementTree`。
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeView, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt, QModelIndex
import xml.etree.ElementTree as ET
```
然后,定义窗口类,并设置QTreeView:
```python
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.tree_view = QTreeView()
self.tree_view.setAlternatingRowColors(True)
self.model = MyModel() # 自定义模型类
self.tree_view.setModel(self.model)
# 双击事件处理
self.tree_view.doubleClicked.connect(self.on_double_click)
layout = QVBoxLayout()
layout.addWidget(self.tree_view)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
def on_double_click(self, index: QModelIndex):
if not index.isValid(): return
data = self.model.data(index) # 获取选中的数据
self.write_to_xml(data) # 写入XML函数
def write_to_xml(data):
root = ET.Element("root")
sub_element = ET.SubElement(root, "item", {"id": str(data.id)})
sub_element.text = str(data.name)
xml_string = ET.tostring(root, encoding='utf8', method='xml')
with open('output.xml', 'wb') as f:
f.write(xml_string)
```
最后,在主函数中启动应用程序:
```python
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例中,我们假设有一个名为`MyModel`的自定义模型类,用于存储待显示的数据(例如字典或列表)。当用户双击树视图中的某个节点时,会触发`on_double_click`函数,该函数获取当前选择的数据,并通过`write_to_xml`函数将其写入XML文件。
阅读全文