Как в PyQt5 правильно прописать недостающий атрибут?
Данный код работает до тех пор, пока не вызывается функция ledControl(). Выходит сообщение: AttributeError: 'New' object has no attribute 'serialSend'. Как правильно прописать этот атрибут?
main.py
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.uic import loadUi
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
from PyQt5.QtCore import QIODevice
class New(QMainWindow):
def __init__(self):
super(New, self).__init__()
loadUi("Arduino_GUI.ui", self)
self.setWindowTitle('New')
self.openB.clicked.connect(self.onOpen)
self.closeB.clicked.connect(self.onClose)
self.ledC.stateChanged.connect(self.ledControl)
self.serial = QSerialPort()
self.serial.setBaudRate(115200)
portList = []
ports = QSerialPortInfo().availablePorts()
for port in ports:
portList.append(port.portName())
print(portList)
self.comL.addItems(portList)
def onOpen(self):
print('on')
self.serial.setPortName(self.comL.currentText())
self.serial.open(QIODevice.ReadWrite)
def onClose(self):
print('close')
self.serial.close()
def ledControl(self, val):
if val == 2: val = 1;
print('led')
self.serialSend([0, val])
def closeEvent(self, e):
super().closeEvent(e)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = New()
window.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: Владимир
→ Ссылка
Элементарная невнимательность. Вопрос закрыт
main.py
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.uic import loadUi
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
from PyQt5.QtCore import QIODevice
class New(QMainWindow):
def __init__(self):
super(New, self).__init__()
loadUi("Arduino_GUI.ui", self)
self.setWindowTitle('New')
self.openB.clicked.connect(self.onOpen)
self.closeB.clicked.connect(self.onClose)
self.ledC.stateChanged.connect(self.ledControl)
self.serial = QSerialPort()
self.serial.setBaudRate(115200)
portList = []
ports = QSerialPortInfo().availablePorts()
for port in ports:
portList.append(port.portName())
print(portList)
self.comL.addItems(portList)
def onOpen(self):
print('on')
self.serial.setPortName(self.comL.currentText())
self.serial.open(QIODevice.ReadWrite)
def onClose(self):
print('close')
self.serial.close()
def serialSend(self, data):
txs = ''
for val in data:
txs += str(val)
txs += ','
txs = txs[:-1]
txs += ';'
self.serial.write(txs.encode())
def ledControl(self, val):
if val == 2: val = 1;
print('led')
self.serialSend([0, val])
def closeEvent(self, e):
super().closeEvent(e)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = New()
window.show()
sys.exit(app.exec_())