基于PySide6,python,实现每次点击QComboBox对象时都可以刷新获取电脑COM口的功能

想做一个QComboBox,可以实现每次点击QComboBox出现下拉列表时能够去重新刷新获取一下电脑上的COM口

结合GPT和我的想法:

你可以使用PySide6中的QComboBox和QSerialPortInfo类来实现每次点击QComboBox时刷新获取电脑上的COM口。QSerialPortInfo类可以用来获取可用的串口信息。以下是一个示例代码:

python
Copy code
from PySide6.QtWidgets import QApplication, QComboBox, QMainWindow, QMessageBox
from PySide6.QtSerialPort import QSerialPortInfo

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('COM口选择器')
        self.setGeometry(100, 100, 400, 200)

        self.combo_box = QComboBox(self)
        self.combo_box.setGeometry(50, 50, 300, 30)

        self.refresh_serial_ports()
        self.combo_box.activated.connect(self.on_combo_box_activated)

    def refresh_serial_ports(self):
        self.combo_box.clear()
        available_ports = QSerialPortInfo.availablePorts()
        for port in available_ports:
            self.combo_box.addItem(port.portName())

    def on_combo_box_activated(self, index):
        selected_port = self.combo_box.currentText()
        QMessageBox.information(self, "选中的COM口", f"你选择了:{selected_port}")

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()

在这个示例中,创建了一个主窗口,其中包含一个QComboBox用于显示可用的COM口列表。在初始化UI时,会调用refresh_serial_ports()函数来刷新并获取电脑上的COM口信息,并将其添加到QComboBox的下拉列表中。每次点击QComboBox时,都会触发on_combo_box_activated槽函数,显示所选的COM口的信息。

注意:使用PySide6之前,请确保已经安装了PySide6库,并且QSerialPortInfo类需要PySide6的QtSerialPort模块。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章讲的很详细,请看:[PyQt5]基本控件8 - 下拉列表QComboBox
  • 除此之外, 这篇博客: PyQt5 组件之QComboBox中的 QComboBox 常用方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    方法描述
    addItem()添加一个下拉选项
    addItems()从列表中添加下拉选项
    Clear()删除下拉选项集合中的所有选项
    count()返回下拉选项集合中的数目
    currentText()返回选中选项的文本
    itemText(i)获取索引为i的item的选项文本
    currentIndex()返回选中项的索引
    setItemText(int index,text)改变序列号为index的文本

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^