-
Notifications
You must be signed in to change notification settings - Fork 64
Open
Description
Предлагаю реализацию такой какой она должна быть в PyQt5
main.py
import sys
from PyQt5 import QtWidgets
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
from PyQt5.QtCore import QIODevice
from ui import Ui_MainWindow
class App(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self) -> None:
super().__init__()
self.setupUi(self)
self.serial = QSerialPort()
self.serial.setBaudRate(115200)
self.pos_x = 200
self.pos_y = 100
self.list_x = [x for x in range(100)]
self.list_y = [x for x in range(100)]
self.serial.readyRead.connect(self.__one_read)
self.openB.clicked.connect(self.__on_open)
self.closeB.clicked.connect(self.__on_close)
self.ledC.stateChanged.connect(self.__led_control)
self.fanC.stateChanged.connect(self.__fan_control)
self.bulbC.stateChanged.connect(self.__bulb_control)
self.RS.valueChanged.connect(self.__rgb_control)
self.GS.valueChanged.connect(self.__rgb_control)
self.BS.valueChanged.connect(self.__rgb_control)
self.servoK.valueChanged.connect(self.__servo_control)
self.sendB.clicked.connect(self.__send_text)
def __add_comL_items(self) -> None:
"""Функция заполнения ComboBox"""
self.comL.addItems([port.portName() for port in QSerialPortInfo().availablePorts()])
def __one_read(self) -> None:
if self.serial.canReadLine():
rx = self.serial.readLine()
data = str(rx, 'UTF-8').strip().split(',')
if data[0] == '0':
self.lcdN.display(data[1])
self.tempB.setValue(int(float(data[3]) * 10))
self.tempL.setText(data[3])
self.list_y = self.list_y[1:]
self.list_y.append(int(data[2]))
self.graph.clear()
self.graph.plot(self.list_x, self.list_y)
elif data[0] == '1':
self.circle.setChecked(True if data[1] == '0' else False)
elif data[0] == '2':
self.pos_x += int((int(data[1]) - 512) / 100)
self.pos_y += int((int(data[2]) - 512) / 100)
self.circle.setGeometry(self.pos_x, self.pos_y, 20, 20)
def __on_open(self) -> None:
self.serial.setPortName(self.comL.currentText())
self.serial.open(QIODevice.ReadWrite)
def __on_close(self) -> None:
self.serial.close()
def __serial_send(self, arr: list) -> None:
txs = ""
for val in arr:
txs += f"{str(val)},"
txs = txs[:-1]
txs += ';'
self.serial.write(txs.encode())
def __check_val(self, number: int) -> int:
if number == 2:
number = 1
return number
def __led_control(self, val: int) -> None:
self.__serial_send([0, self.__check_val(val)])
def __fan_control(self, val: int) -> None:
self.__serial_send([3, self.__check_val(val)])
def __bulb_control(self, val: int) -> None:
self.__serial_send([4, self.__check_val(val)])
def __servo_control(self, val: int) -> None:
self.__serial_send([2, val])
def __rgb_control(self) -> None:
self.__serial_send([1, self.RS.value(), self.GS.value(), self.BS.value()])
def __send_text(self) -> None:
self.serial.write(f"5,{self.textF.displayText()};".encode())
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = App()
window.show()
app.exec_()ui.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'design.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(553, 314)
MainWindow.setTabShape(QtWidgets.QTabWidget.Rounded)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setGeometry(QtCore.QRect(10, 70, 151, 221))
self.groupBox.setObjectName("groupBox")
self.widget = QtWidgets.QWidget(self.groupBox)
self.widget.setGeometry(QtCore.QRect(10, 10, 131, 181))
self.widget.setObjectName("widget")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.widget)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.RS = QtWidgets.QSlider(self.widget)
self.RS.setMaximum(255)
self.RS.setOrientation(QtCore.Qt.Vertical)
self.RS.setObjectName("RS")
self.horizontalLayout_3.addWidget(self.RS)
self.GS = QtWidgets.QSlider(self.widget)
self.GS.setMaximum(255)
self.GS.setOrientation(QtCore.Qt.Vertical)
self.GS.setObjectName("GS")
self.horizontalLayout_3.addWidget(self.GS)
self.BS = QtWidgets.QSlider(self.widget)
self.BS.setMaximum(255)
self.BS.setOrientation(QtCore.Qt.Vertical)
self.BS.setObjectName("BS")
self.horizontalLayout_3.addWidget(self.BS)
self.widget1 = QtWidgets.QWidget(self.groupBox)
self.widget1.setGeometry(QtCore.QRect(30, 200, 111, 20))
self.widget1.setObjectName("widget1")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.widget1)
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label = QtWidgets.QLabel(self.widget1)
self.label.setObjectName("label")
self.horizontalLayout_4.addWidget(self.label)
self.label_2 = QtWidgets.QLabel(self.widget1)
self.label_2.setObjectName("label_2")
self.horizontalLayout_4.addWidget(self.label_2)
self.label_3 = QtWidgets.QLabel(self.widget1)
self.label_3.setObjectName("label_3")
self.horizontalLayout_4.addWidget(self.label_3)
self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox_2.setGeometry(QtCore.QRect(0, 0, 281, 41))
self.groupBox_2.setObjectName("groupBox_2")
self.widget2 = QtWidgets.QWidget(self.groupBox_2)
self.widget2.setGeometry(QtCore.QRect(10, 10, 271, 31))
self.widget2.setObjectName("widget2")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget2)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.comL = QtWidgets.QComboBox(self.widget2)
self.comL.setObjectName("comL")
self.horizontalLayout.addWidget(self.comL)
self.openB = QtWidgets.QPushButton(self.widget2)
self.openB.setObjectName("openB")
self.horizontalLayout.addWidget(self.openB)
self.closeB = QtWidgets.QPushButton(self.widget2)
self.closeB.setObjectName("closeB")
self.horizontalLayout.addWidget(self.closeB)
self.servoK = QtWidgets.QDial(self.centralwidget)
self.servoK.setGeometry(QtCore.QRect(210, 180, 101, 91))
self.servoK.setMaximum(180)
self.servoK.setObjectName("servoK")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(240, 270, 47, 13))
self.label_4.setObjectName("label_4")
self.tempB = QtWidgets.QProgressBar(self.centralwidget)
self.tempB.setGeometry(QtCore.QRect(170, 90, 31, 201))
self.tempB.setMinimum(200)
self.tempB.setMaximum(400)
self.tempB.setProperty("value", 199)
self.tempB.setOrientation(QtCore.Qt.Vertical)
self.tempB.setObjectName("tempB")
self.tempL = QtWidgets.QLabel(self.centralwidget)
self.tempL.setGeometry(QtCore.QRect(170, 70, 47, 13))
self.tempL.setObjectName("tempL")
self.lcdN = QtWidgets.QLCDNumber(self.centralwidget)
self.lcdN.setGeometry(QtCore.QRect(330, 40, 211, 71))
self.lcdN.setObjectName("lcdN")
self.circle = QtWidgets.QRadioButton(self.centralwidget)
self.circle.setGeometry(QtCore.QRect(260, 160, 41, 21))
self.circle.setText("")
self.circle.setIconSize(QtCore.QSize(0, 0))
self.circle.setObjectName("circle")
self.graph = PlotWidget(self.centralwidget)
self.graph.setGeometry(QtCore.QRect(330, 120, 211, 161))
self.graph.setObjectName("graph")
self.widget3 = QtWidgets.QWidget(self.centralwidget)
self.widget3.setGeometry(QtCore.QRect(10, 40, 231, 21))
self.widget3.setObjectName("widget3")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget3)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.ledC = QtWidgets.QCheckBox(self.widget3)
self.ledC.setObjectName("ledC")
self.horizontalLayout_2.addWidget(self.ledC)
self.fanC = QtWidgets.QCheckBox(self.widget3)
self.fanC.setObjectName("fanC")
self.horizontalLayout_2.addWidget(self.fanC)
self.bulbC = QtWidgets.QCheckBox(self.widget3)
self.bulbC.setObjectName("bulbC")
self.horizontalLayout_2.addWidget(self.bulbC)
self.widget4 = QtWidgets.QWidget(self.centralwidget)
self.widget4.setGeometry(QtCore.QRect(210, 90, 111, 51))
self.widget4.setObjectName("widget4")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget4)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.textF = QtWidgets.QLineEdit(self.widget4)
self.textF.setObjectName("textF")
self.verticalLayout.addWidget(self.textF)
self.sendB = QtWidgets.QPushButton(self.widget4)
self.sendB.setObjectName("sendB")
self.verticalLayout.addWidget(self.sendB)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.groupBox.setTitle(_translate("MainWindow", "RGB"))
self.label.setText(_translate("MainWindow", "R"))
self.label_2.setText(_translate("MainWindow", "G"))
self.label_3.setText(_translate("MainWindow", "B"))
self.groupBox_2.setTitle(_translate("MainWindow", "Serial"))
self.openB.setText(_translate("MainWindow", "OPEN"))
self.closeB.setText(_translate("MainWindow", "CLOSE"))
self.label_4.setText(_translate("MainWindow", "SERVO"))
self.tempL.setText(_translate("MainWindow", "0.0"))
self.ledC.setText(_translate("MainWindow", "LED"))
self.fanC.setText(_translate("MainWindow", "FAN"))
self.bulbC.setText(_translate("MainWindow", "BULB"))
self.sendB.setText(_translate("MainWindow", "SEND"))Metadata
Metadata
Assignees
Labels
No labels