简单的程序,当我在代码中切换按钮时,需要它根据pyserial写功能的按钮状态来写'On'或'Off'
import sys
import serial
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QPainter, QBrush, QPen, QColor
from PyQt5.QtCore import Qt, pyqtSlot
class Control_LED(QWidget):
def __init__(self):
super().__init__()
self.title = "Home Automation"
self.top = 10
self.left = 10
self.width = 500
self.height = 250
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.toggle_button = QPushButton('On/Off', self)
self.toggle_button.move(300, 100)
self.toggle_button.setCheckable(True)
self.toggle_button.clicked.connect(self.change_state)
self.color = QColor(Qt.white)
self.show()
def serialWrite(self):
self.ser = serial.Serial(port='/dev/ttyS0', baudrate=9600,
parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS, timeout=0)
def paintEvent(self, event):
painter = QPainter(self)
painter.setPen(QPen(Qt.black, 8, Qt.SolidLine))
painter.setBrush(self.color)
painter.drawEllipse(40, 40, 200, 200)
@pyqtSlot()
def change_state(self):
if(self.toggle_button.isChecked()):
print('On')
self.color = QColor(Qt.green)
self.update()
ser.write(b'On')
else:
print('Off')
self.color = QColor(Qt.red)
self.update()
ser.write(b'Off')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Control_LED()
sys.exit(app.exec_())
我收到以下错误:
Traceback (most recent call last):
File "on_off_toggle.py", line 47, in change_state
ser.write(b'On')
NameError: name 'ser' is not defined
Aborted (core dumped)
如何解决该错误。谢谢