pyqt5中使用一个按钮控制串口开关
时间: 2024-02-23 22:00:28 浏览: 218
在PyQt5中使用一个按钮控制串口开关,可以参考以下代码:
```python
import sys
import serial
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel
from PyQt5.QtCore import QThread, pyqtSignal
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("串口控制")
self.setGeometry(100, 100, 300, 200)
self.label = QLabel(self)
self.label.move(20, 20)
self.btn = QPushButton("打开串口", self)
self.btn.move(20, 60)
self.btn.clicked.connect(self.toggleSerialPort)
self.ser = None
def toggleSerialPort(self):
if not self.ser:
self.ser = serial.Serial("COM1", 115200, timeout=0.5) # 打开串口
self.label.setText("串口已打开")
self.btn.setText("关闭串口")
else:
self.ser.close() # 关闭串口
self.ser = None
self.label.setText("串口已关闭")
self.btn.setText("打开串口")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在该代码中,我们创建了一个主窗口类`MainWindow`,其中包含一个`QLabel`和一个`QPushButton`控件。当按钮被点击时,我们通过`toggleSerialPort`方法来打开或关闭串口。如果串口处于关闭状态,我们就打开串口,并将按钮文本设置为“关闭串口”;如果串口处于打开状态,我们就关闭串口,并将按钮文本设置为“打开串口”。
在`toggleSerialPort`方法中,我们使用`serial.Serial`函数来打开串口,并将返回值赋给`self.ser`。如果`self.ser`为`None`,表示串口处于关闭状态,我们就打开串口,并设置标签文本和按钮文本;如果`self.ser`不为`None`,表示串口处于打开状态,我们就关闭串口,将`self.ser`赋为`None`,并设置标签文本和按钮文本。
需要注意的是,串口读写操作可能会阻塞主线程,因此在实际应用中,我们应该使用线程或协程来处理串口数据。
阅读全文