pyqt5设计一个按钮,当点击按钮时打开串口,再次点击关闭串口
时间: 2024-03-05 19:50:15 浏览: 124
可以使用PyQt5中的QPushButton和QSerialPort类来实现这个功能。首先,在PyQt5中创建一个按钮:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 300, 200)
self.setWindowTitle('Serial Port')
self.btn = QPushButton('Open Serial Port', self)
self.btn.clicked.connect(self.btnClicked)
self.show()
def btnClicked(self):
# TODO 打开或关闭串口
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
sys.exit(app.exec_())
```
在按钮的`clicked`信号槽中连接一个函数`btnClicked`,在这个函数中处理打开或关闭串口的逻辑。使用QSerialPort类来打开串口:
```python
import sys
from PyQt5.QtCore import QIODevice, QSerialPort
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 300, 200)
self.setWindowTitle('Serial Port')
self.btn = QPushButton('Open Serial Port', self)
self.btn.clicked.connect(self.btnClicked)
self.serial = QSerialPort()
self.show()
def btnClicked(self):
if not self.serial.isOpen():
self.serial.setPortName('COM1') # 设置串口号
self.serial.setBaudRate(QSerialPort.Baud9600) # 设置波特率
self.serial.setDataBits(QSerialPort.Data8) # 设置数据位
self.serial.setParity(QSerialPort.NoParity) # 设置校验位
self.serial.setStopBits(QSerialPort.OneStop) # 设置停止位
self.serial.open(QIODevice.ReadWrite) # 打开串口
self.btn.setText('Close Serial Port') # 修改按钮文本
else:
self.serial.close() # 关闭串口
self.btn.setText('Open Serial Port') # 修改按钮文本
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
sys.exit(app.exec_())
```
在`btnClicked`函数中判断串口是否已经打开,如果没有则设置串口的参数并打开串口;如果已经打开,则关闭串口。同时修改按钮的文本,反映当前串口状态。这样就实现了一个简单的串口开关按钮。
阅读全文