已经实现以下功能 1.可以选择单片机架构 2.选择完单片机架构后第二个框可以选择常见单片机型号 3.选择完常见单片机型号后第三个框可以选择内部资源如adc等(可以选择多个内部资源)4.选择完内部资源如adc等(可以选择多个内部资源)后,将文件名带有所选择的内部资源的.c和.h文件导入user文件夹 5.右侧文本框显示已选择的项,以及已选项的详细内容
前提需要准备好对应的内部资源文件。
import sys
import os
import shutil
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout,QComboBox, QListWidget, QPushButton, QLabel,QPlainTextEdit)class MCUConfigurator(QWidget):def __init__(self):super().__init__()self.arch_map = {"ARM": ["STM32F103", "STM32F407", "LPC1768"],"AVR": ["ATmega328P", "ATmega2560", "ATtiny85"]}self.resources = ["ADC", "UART", "SPI", "I2C", "PWM", "GPIO"]self.initUI()self.file_dir = "source_files"self.user_dir = "user"def initUI(self):main_layout = QHBoxLayout()# 左侧配置区left_layout = QVBoxLayout()self.arch_combo = QComboBox()self.arch_combo.addItems(["选择架构"] + list(self.arch_map.keys()))self.arch_combo.currentIndexChanged.connect(self.update_devices)self.arch_combo.currentIndexChanged.connect(self.update_display)self.device_combo = QComboBox()self.device_combo.addItem("选择型号")self.device_combo.currentIndexChanged.connect(self.update_display)self.resource_list = QListWidget()self.resource_list.addItems(self.resources)self.resource_list.setSelectionMode(3)self.resource_list.itemSelectionChanged.connect(self.update_display)self.btn_export = QPushButton("生成文件")self.btn_export.clicked.connect(self.export_files)left_layout.addWidget(self.arch_combo)left_layout.addWidget(self.device_combo)left_layout.addWidget(QLabel("选择资源(多选):"))left_layout.addWidget(self.resource_list)left_layout.addWidget(self.btn_export)# 右侧显示区right_layout = QVBoxLayout()self.selected_display = QPlainTextEdit()self.selected_display.setReadOnly(True)right_layout.addWidget(QLabel("已选配置详情:"))right_layout.addWidget(self.selected_display)main_layout.addLayout(left_layout, 60)main_layout.addLayout(right_layout, 40)self.setLayout(main_layout)def update_devices(self):self.device_combo.clear()arch = self.arch_combo.currentText()self.device_combo.addItems(["选择型号"] + self.arch_map.get(arch, []))def update_display(self):arch = self.arch_combo.currentText() if self.arch_combo.currentIndex() > 0 else ""device = self.device_combo.currentText() if self.device_combo.currentIndex() > 0 else ""resources = [item.text() for item in self.resource_list.selectedItems()]display_text = f"架构:{arch}\n型号:{device}\n"display_text += "资源:" + (",".join(resources) if resources else "未选择")self.selected_display.setPlainText(display_text)def export_files(self):# 保持原有导出逻辑不变passif __name__ == '__main__':app = QApplication(sys.argv)ex = MCUConfigurator()ex.setWindowTitle("MCU配置工具")ex.resize(600, 400)ex.show()sys.exit(app.exec_())
运行结果