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):
        # 保持原有导出逻辑不变
        pass


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MCUConfigurator()
    ex.setWindowTitle("MCU配置工具")
    ex.resize(600, 400)
    ex.show()
    sys.exit(app.exec_())

 运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值