想做一个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模块。
不知道你这个问题是否已经解决, 如果还没有解决的话:方法 | 描述 |
addItem() | 添加一个下拉选项 |
addItems() | 从列表中添加下拉选项 |
Clear() | 删除下拉选项集合中的所有选项 |
count() | 返回下拉选项集合中的数目 |
currentText() | 返回选中选项的文本 |
itemText(i) | 获取索引为i的item的选项文本 |
currentIndex() | 返回选中项的索引 |
setItemText(int index,text) | 改变序列号为index的文本 |