python 搜索串口 代码 qt
时间: 2024-01-16 16:01:00 浏览: 81
在Python中使用QT库进行串口搜索的代码如下:
```python
import serial.tools.list_ports
from PyQt5 import QtCore, QtWidgets
class SerialPortSearchThread(QtCore.QThread):
found_serial_ports = QtCore.pyqtSignal(list)
def run(self):
serial_ports = serial.tools.list_ports.comports()
port_list = [port.device for port in serial_ports]
self.found_serial_ports.emit(port_list)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.serial_search_thread = SerialPortSearchThread()
self.serial_search_thread.found_serial_ports.connect(self.update_serial_ports)
self.serial_ports_combo = QtWidgets.QComboBox()
self.serial_ports_combo.setEnabled(False)
self.serial_search_button = QtWidgets.QPushButton("Search Serial Ports")
self.serial_search_button.clicked.connect(self.search_serial_ports)
main_layout = QtWidgets.QVBoxLayout()
main_layout.addWidget(self.serial_ports_combo)
main_layout.addWidget(self.serial_search_button)
main_widget = QtWidgets.QWidget()
main_widget.setLayout(main_layout)
self.setCentralWidget(main_widget)
def search_serial_ports(self):
self.serial_search_thread.start()
def update_serial_ports(self, port_list):
self.serial_ports_combo.clear()
self.serial_ports_combo.addItems(port_list)
self.serial_ports_combo.setEnabled(True)
app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这段代码使用了PyQt5库和`serial.tools.list_ports`模块来搜索计算机上的可用串口,并将搜索到的串口名添加到一个下拉框中。首先,定义了一个继承自`QtCore.QThread`的`SerialPortSearchThread`类,该类重写了`run()`方法,在方法中调用了`serial.tools.list_ports.comports()`获取所有可用的串口,并将其添加到一个列表中。然后,通过定义一个信号`found_serial_ports`将串口列表传递给主界面。在主界面中,定义了一个`search_serial_ports()`方法,该方法在点击搜索按钮时启动了串口搜索线程。当串口搜索线程完成后,通过连接到`found_serial_ports`信号的`update_serial_ports()`方法来更新下拉框中显示的串口列表。最后,使用Qt框架启动了一个应用程序并显示了主窗口。
阅读全文