软件配置工具介绍
1)配置工具根据配置文件(xml)生成配置界面
1. 界面里根据xml的attr会生成输入框、复选框
2. 界面里根据xml的attr显示配置选项参数的不可修改(只读)和可修改(读写属性)
2)配置工具可以在配置参数后生成头文件
3)配置工具界面参数之间的参数可以根据公式进行耦合(还未实现,以后再补充)
开发平台需求
提示:windows平台
Python3.8+ (pyqt5/pyinstaller) 其他插件根据需求安装
PyCharm
软件代码
提示:只提供关键代码和采坑代码
根据xml动态绘制配置工具界面
def dynamic_create_ui (self) :
xml_tree = ET.parse(self.xml_file)
root = xml_tree.getroot()
i = 0
for sub_element in root:
tab = QtWidgets.QWidget()
tab.get0bjectName("tab_{i}”)
self.tabs[i]= tab
groupBox = QtWidgets.QGroupBox(self.tabs[i])
//tab界面尺寸,可根据需要自行调整
groupBox.setteometry(QtCore.QRect(x, x,x,x))
groupBox.set0bjectName("groupBox_{I}")
self. groupBox[i] = groupBox
j = 0
for node in sub element:
label = QLabel(self.groupBoxs[i])
//配置选项位置
label.setGeometry(QtCore.QRect(x, x, x, x))
label.setObjectName("label_{i * 10 + j}")
self.labels[i * 10 + j] = label
self labels[i * 10 + j].setText(node.tag + “: ”)
label_param = QLabel(self.groupBoxs[i])
label_param.setGeometry(QtCore.QRect(x, x, x, x))
label_param.set0bjectName("label param_{i * 10 + j)")
self.label_params[i * 10 + j] = label_param
if. PARAM in node attrib:
self.label params[i * 10 + j].setText('(' + node.attrib['PARAM'] + ‘)’)
//其他类型以此类推
if 'ATTR1' in node.attrib and node.attribl'ATTRI'] = "COMB" :
comboBox = QtWidgets.QComboBox(self.groupBoxs[i])
//尺寸自行设定
comboBox.setGeometry(QtCore.QRect (x,x,x,x))
comboBox.setObjectName("comboBox{i * 10 + j}")
self.comboBoxs[i * 10 + j] = comboBox
comboBox.addItem("")
comboBox.addItem("")
self.comboBoxs[i * 10 + j].setItemText(0, "xx")
self.comboBoxs[i * 10 + j].setItemText(1, "xx")
//鼠标移动到复选框弹出的提示信息
self.comboBoxs[i * 10 + j].setToolTip("0: xx" + "1: xx")
j = j + 1
//踩坑记录,否则第一个界面数据呈现会出问题
j = 0
for node in sub_element:
self.groupBoxs[i].setTitle(sub_element.tag + " configuration")
self.tabWidget.addTab(self.tab[i], "")
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab[i]), sub_element.tag)
j = j + 1
i = i + 1
小结
软件编写存在很多坑,也需要不断跨坑而行,后面会持续记录。