当前位置: 首页 > news >正文

pyqt写一个单片机配置界面

        已经实现以下功能 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_())

 运行结果

http://www.xdnf.cn/news/295525.html

相关文章:

  • DockerDesktop替换方案
  • AVL树 和 红黑树 的插入算法
  • 模拟芯片设计中数字信号处理一些常用概念(一)
  • Agent2Agent(谷歌A2A)协议原理讲解
  • Linux 文件系统深度解析
  • (二)MMA(整洁架构)
  • 中阳策略:如何从K线行为中提取交易逻辑信号?
  • spring中spring-boot-configuration-processor的使用
  • wordperss AI插件:AI图文+视频+长尾关键词自动生成,已内置deepseek、kimi全模型,支持简单一键接入更多自定义API
  • 动态规划之子序列问题1
  • n8n中Wait节点的使用详解:流程暂停与恢复的实战指南
  • CodeQL-CLI工具小白入门
  • hp主机安装ubuntu 22.04版本并换阿里源
  • 【Unity】一个AssetBundle热更新的使用小例子
  • n8n 中 Compare Datasets 节点使用详解
  • 怎么使用nacos作注册中心 + 配置中心。
  • PCA降维详解
  • 信息安全导论 第八章 入侵检测技术
  • 手表关于MPU6050中的功能实现
  • 深入理解C语言中的内存区域:堆、栈与变量存储空间详解
  • Python 文件操作详解:从基础到实践
  • 面向对象与过程介绍
  • Java学习手册:Hibernate/JPA 使用指南
  • Oracle OCP认证考试考点详解083系列08
  • 高速接口:PCIe 3.0 Link Training的详细过程
  • 5.4 - 5.5Web基础+c语言拓展功能函数
  • MyDB - 手写数据库
  • Spring 框架的底层原理
  • 【Fifty Project - D22】
  • 三维重建(二十一)——第二步和第三步