Compare commits

..

No commits in common. "525c9b8165ee0470d63cf6518cd75c706157a90c" and "9335be69c92d5e1f7eb750120058e1a8680fca14" have entirely different histories.

14 changed files with 753 additions and 895 deletions

300
Main.py Normal file
View File

@ -0,0 +1,300 @@
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5 import uic
from PyQt5.QtGui import QColor, QPalette
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import *
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
import requests
import time
import json
import Res_rc
import copy
import pyqtgraph as pg
import sys
#import matplotlib.pyplot as plt
colors = {}
last_clicked_label = None
plotLen = 20
valArr = [20] * plotLen
plot = None
def led1 (checked):
if checked:
form.pushButton_2.setText("Выкл")
print("I'm worked too much")
form.label_24.hide()
form.label_20.show()
else:
form.label_20.hide()
form.label_24.show()
form.pushButton_2.setText("Вкл")
print ("I'm worked too")
def led2 (checked):
if checked:
form.pushButton_3.setText("Выкл")
print("I'm worked too much")
form.label_27.hide()
form.label_26.show()
else:
form.label_26.hide()
form.label_27.show()
form.pushButton_3.setText("Вкл")
print ("I'm worked too")
def led3 (checked):
if checked:
form.pushButton_4.setText("Выкл")
print("I'm worked too much")
form.label_31.hide()
form.label_29.show()
#state = form.label_24.isVisible()
else:
form.label_29.hide()
form.label_31.show()
form.pushButton_4.setText("Вкл")
print ("I'm worked too")
def updateLCD():
global temp
form.lcdNumber.display(temp)
def sed ():
print ("I'm worked!")
led_data = {
"leds1": {"red": 0, "green": 0, "blue": 0},
"leds2": {"red": 0, "green": 0, "blue": 0},
"leds3": {"red": 0, "green": 0, "blue": 0},
"leds4": {"red": 0, "green": 0, "blue": 0},
"leds5": {"red": 0, "green": 0, "blue": 0},
"leds6": {"red": 0, "green": 0, "blue": 0},
"leds7": {"red": 0, "green": 0, "blue": 0},
"leds8": {"red": 0, "green": 0, "blue": 0},
}
def vkl():
for led in form.leds:
#caution! Naming will be the same for a Led and JSON led objects
led.setStyleSheet(f"background-color: yellow;")
led_data[led.objectName()]["red"] = 255
led_data[led.objectName()]["green"] = 255
led_data[led.objectName()]["blue"] = 0
def vikl():
for led in form.leds:
#caution! Naming will be the same for a Led and JSON led objects
led.setStyleSheet(f"background-color: black;")
led_data[led.objectName()]["red"] = 0
led_data[led.objectName()]["green"] = 0
led_data[led.objectName()]["blue"] = 0
def color():
color = QColorDialog.getColor()
if color.isValid():
palette = QPalette()
palette.setColor(QPalette.Button, color)
form.color_b.setPalette(palette)
for led in form.leds:
led.setStyleSheet(f"background-color: {color.name()};")
led_data[led.objectName()]["red"] = color.red()
led_data[led.objectName()]["green"] = color.green()
led_data[led.objectName()]["blue"] = color.blue()
def led_clicked(event):
colors = led.palette().color(QPalette.Background)
sender= QApplication.widgetAt(event.globalPos()) #QApplication.widgetAt() для получения текущего виджета, на котором было совершено действие
color = QColorDialog.getColor()
if color.isValid():
#caution! Naming will be the same for a Led and JSON led objects
sender.setStyleSheet(f"background-color: {color.name()};")
led_data[sender.objectName()]["red"] = color.red()
led_data[sender.objectName()]["green"] = color.green()
led_data[sender.objectName()]["blue"] = color.blue()
else:
form.leds.setStyleSheet(" ")
def sendMessage():
url = form.lineEdit.text()
labels_dict = {}
labels_dict["LED1"] = form.label_20.isVisible()
labels_dict["LED2"] = form.label_26.isVisible()
labels_dict["LED3"] = form.label_29.isVisible()
json_data = {}
json_data.update(led_data)
json_data.update(labels_dict)
json_str = json.dumps(json_data, separators=(',', ':'))
data_str = 'Я отправляю текст на: ' + url + '\n'+ json_str
form.textEdit.setPlainText(data_str)
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} #заголовки запроса
response = requests.post(url, json=json_data, headers=headers) #отправка POST запроса
# обрабатываем ответ и выводим его в поле вывода
if response.status_code == 200:
form.textEdit.append('О, все прошло успешно!\n') #выводим значение в line_edit
else:
form.textEdit.append('Ошибка при получении данных')
def getValueFromMacket():
url = form.lineEdit_2.text()
response = requests.get(url) #отправка POST запроса
# обрабатываем ответ и выводим его в поле вывода
if response.status_code == 200:
data=response.json() #функция преобразования данных в объект питон
#Parse the date
form.textEdit.append(json.dumps(data)) #выводим значение в line_edit
form.textEdit.append(str(data["temperature"]))
bs = list()
bs.append(data["button1State"])
bs.append(data["button2State"])
bs.append(data["button3State"])
update_button(bs)
update_pressure(data["pressure"])
form.lcdNumber_7.display(data["ambient_light"])
form.lcdNumber_2.display (data["red_light"])
form.lcdNumber_3.display (data["green_light"])
form.lcdNumber_4.display (data["blue_light"])
form.lcdNumber_8.display (data["lightness"])
form.lcdNumber_5.display(data['acceleration_x'])
form.lcdNumber_9.display (data['acceleration_y'])
form.lcdNumber_6.display (data['acceleration_z'])
led1(data['LED1'])
led2(data['LED2'])
led3(data['LED3'])
valArr.pop(0)
valArr.append(data["temperature"])
print(valArr)
UpdatePlot(plot, valArr)
else:
form.textEdit.append('Ошибка при получении данных')
#json.load(file) @ACHT! Method to convert Str to JSON
def update_pressure(p):
form.lcd_pressure.display(p)
def update_button (bs):
for i in range(1, 4):
button_state = bs[i-1]
if button_state == 'True':
getattr(form, f'on_{i}').show()
getattr(form, f'off_{i}').hide()
else:
getattr(form, f'on_{i}').hide()
getattr(form, f'off_{i}').show()
def UpdatePlot(plot, val):
x = list(range(1, len(valArr)+1))
bargraph = pg.BarGraphItem(x = x, height = val, width = 0.6, brush ='g')
plot.clear()
plot.addItem(bargraph)
def Plots(form, valArr):
widget = QWidget()
plot = pg.plot() #создает объект PlotWidget из библиотеки PyqtGraph
x = list(range(1, len(valArr)+1))
bargraph = pg.BarGraphItem(x = x, height = valArr, width = 0.6, brush ='g')
plot.addItem(bargraph)
# Creating a grid layout
layout = QGridLayout()
layout.addWidget(plot, 0,0)
form.plotwidget.setLayout(layout)
return plot
def main():
with open('./config.json') as f: # открывает файл 'config.json'
conf = json.load(open('config.json')) # загружает его содержимое в переменную 'conf' в формате словаря (dictionary) при помощи функции 'json.load()'
# выводит все ключи словаря 'conf' при помощи цикла 'for'.
print("Find an arguments:")
for i in conf:
print(i)
Form, Window = uic.loadUiType(conf['uiPath'] + conf['uiFileName'])
app = QApplication(sys.argv) # Создаем экземпляр QApplication и передаем параметры командной строки
window = Window()
form = Form()
form.setupUi(window)
window.show() # Окна скрыты по умолчанию!
window.setWindowTitle('Lr4') #nazvanie
form.pushButton.clicked.connect(sendMessage) #привязываем функцию к кнопке Отправить
form.lineEdit.setText("http://" + conf['defaultMDNSname'] + conf['defaultPostRoute'])
form.lineEdit_2.setText("http://" + conf['defaultMDNSname'] + conf['defaultGetRoute'])
form.pushButton_5.clicked.connect(getValueFromMacket) #привязываем функцию к кнопке Отправить GET запрос
form.pushButton_2.setCheckable(True) #вкл режим перекл
form.pushButton_2.setChecked(False) #нач значение
form.label_20.hide()
form.pushButton_2.toggled["bool"].connect(led1)
form.pushButton_3.setCheckable(True) #вкл режим перекл
form.pushButton_3.setChecked(False) #нач значение
form.label_26.hide()
form.pushButton_3.toggled["bool"].connect(led2)
form.pushButton_4.setCheckable(True) #вкл режим перекл
form.pushButton_4.setChecked(False) #нач значение
form.label_29.hide()
form.pushButton_4.toggled["bool"].connect(led3)
form.on_1.hide()
form.on_2.hide()
form.on_3.hide()
form.lcdNumber.display(45)
form.leds = [form.leds1, form.leds2, form.leds3, form.leds4, form.leds5, form.leds6, form.leds7, form.leds8]
for led in form.leds:
led.mousePressEvent = led_clicked
timer = QTimer()
timer.setInterval(1000)
#Connect the timer to the update_pressure function
#TODO connect to getSensValue from macket
# timer.timeout.connect(update_pressure)
# timer.timeout.connect(update_button)
# timer.timeout.connect(update_light)
# timer.timeout.connect(update_acceleration)
timer.start()
form.vkl_b.clicked.connect(vkl)
form.vikl_b.clicked.connect(vikl)
form.color_b.clicked.connect(color)
plot = Plots(form, valArr)
sys.exit (app.exec_()) # Запуск цикла событий
if __name__ == "__main__":
main()

View File

@ -397,7 +397,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_sensor_print3">
<widget class="QLabel" name="label_sensor_print3&#10;">
<property name="geometry">
<rect>
<x>570</x>
@ -986,7 +986,7 @@
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_send_get">
<widget class="QPushButton" name="pushButton_send_get_request">
<property name="geometry">
<rect>
<x>1050</x>

Binary file not shown.

View File

@ -6,42 +6,13 @@
```
.
|- config.json
|- main.py
|- plot.py
|- PyQt_app.ui
|- requirements.txt
|- Res_rc.py
|- main.py
|- display_updater.py # update_led, update_pressure, update_button, update_plot
|- network_manager.py # get_value_from_macket, send_colors
```
Инструкции для запуска проекта
```bash
pip install -r requirements.txt
python main.py
```
Тестовый сервер можно запустить через [Mockoon](https://mockoon.com/)
В нём нужно открыть файл `openapi_mock.json`
То, что нужно сделать помечено комментариями с `TODO:`
Помимо этого, необходимо переработать названия виджетов - начало заложено, но там ещё есть куда расти. В нынешнем виде код некорректно работает, так как есть отличия в названиях
Кроме того, Артём, мы забыли про функции vkl* и про обработчики для выбора цветов светодиодов. Их нужно переработать как методы того класса (надеюсь, разберёшься)
Также не забывем, что на самом деле мы должны оформить нашу программу как методички для набора лаб. Скорее всего их будет 2-3:
1. Работа с QT Designer
2. Взаимодействие с PyQT5 - просто описание того, как устанавливать и получать значения у элементов, как подписываться на события
3. (или вторая часть 2) Сетевое взаимодействие - то, как работает QTNetworkAccessManager и иже с ними
По ходу описания также стоит рассказать об неочевидных штуках, которые мы применили, вроде `getattr` или декораторов.
Для примера можно посмотреть на .doc'и на [gdrive](https://drive.google.com/drive/folders/1gwLePKsdFZigg063zDGkK1UWlHsGJBiA)
Если что-то непонятно, не стесняемся гуглить, особенно на английском. Желательно всем глянуть какой-нибудь видосик на ютубе и/или прочитать туториал в интернете, чтобы вообще вкатиться, как работает pyqt - поможет с пониманием, зачем нужны многие вещи.
def update_led - led1, led2, led3
def send_colors - sendMessage
```

View File

@ -1,7 +1,7 @@
{
"uiFileName": "PyQt_app.ui",
"uiPath": "./",
"defaultMDNSname": "localhost:3001",
"uiPath": "ui/",
"defaultMDNSname": "esp8266",
"defaultPostRoute": "/postvalue",
"defaultGetRoute": "/sensval",
"pressure": "355",
@ -16,15 +16,5 @@
"lightness": "0",
"acceleration_x": "12",
"acceleration_y": "23",
"acceleration_z": "11",
"defaultRGBLeds": {
"leds1": {"red": 0, "green": 0, "blue": 0},
"leds2": {"red": 0, "green": 0, "blue": 0},
"leds3": {"red": 0, "green": 0, "blue": 0},
"leds4": {"red": 0, "green": 0, "blue": 0},
"leds5": {"red": 0, "green": 0, "blue": 0},
"leds6": {"red": 0, "green": 0, "blue": 0},
"leds7": {"red": 0, "green": 0, "blue": 0},
"leds8": {"red": 0, "green": 0, "blue": 0}
}
"acceleration_z": "11"
}

497
main.py
View File

@ -1,282 +1,299 @@
import typing
from PyQt5 import QtCore, QtGui, QtWidgets #импорт нужный библиотек
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5 import uic
from PyQt5.QtGui import QColor, QPalette
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QTimer, QJsonDocument, QUrl
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import *
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
import requests
import time
import json
import sys
import os
from plot import Plot
import Res_rc
import copy
import pyqtgraph as pg
#import matplotlib.pyplot as plt
#import sys
colors = {} #переменная для работы с цветом, позже нам понадобится
last_clicked_label = None
plotLen = 20
valArr = [20] * plotLen
plot = None
def led1 (checked): #отвечает за включение первого светодиода
if checked:
form.pushButton_2.setText("Выкл")
print("I'm worked too much")
form.label_24.hide()
form.label_20.show()
else:
form.label_20.hide()
form.label_24.show()
form.pushButton_2.setText("Вкл")
print ("I'm worked too")
def read_conf() -> dict:
def led2 (checked): #отвечает за включение второго светодиода
if checked:
form.pushButton_3.setText("Выкл")
print("I'm worked too much")
form.label_27.hide()
form.label_26.show()
else:
form.label_26.hide()
form.label_27.show()
form.pushButton_3.setText("Вкл")
print ("I'm worked too")
"""
Utility for reading, modifying and logging config
def led3 (checked): #отвечает за включение третьего светодиода
if checked:
form.pushButton_4.setText("Выкл")
print("I'm worked too much")
form.label_31.hide()
form.label_29.show()
#state = form.label_24.isVisible()
else:
form.label_29.hide()
form.label_31.show()
form.pushButton_4.setText("Вкл")
print ("I'm worked too")
открывает файл 'config.json', загружает его содержимое в переменную 'conf' в формате словаря (dictionary) при помощи функции 'json.load()', а затем выводит все ключи словаря 'conf' при помощи цикла 'for'.
"""
def updateLCD(): #обновление дисплея
global temp #переменная для работы с дисплеем
form.lcdNumber.display(temp)
# Opening JSON file
f = open('config.json')
conf = json.load(f)
f.close()
def sed (): #проверка работы элемента
print ("I'm worked!")
led_data = { #список начальных параметров у светодиода
"leds1": {"red": 0, "green": 0, "blue": 0},
"leds2": {"red": 0, "green": 0, "blue": 0},
"leds3": {"red": 0, "green": 0, "blue": 0},
"leds4": {"red": 0, "green": 0, "blue": 0},
"leds5": {"red": 0, "green": 0, "blue": 0},
"leds6": {"red": 0, "green": 0, "blue": 0},
"leds7": {"red": 0, "green": 0, "blue": 0},
"leds8": {"red": 0, "green": 0, "blue": 0},
}
# Overwrite config if want to
# ... # TODO: ничего делать не нужно, просто оставьте этот комментарий в конечном файле (или преведите на русский)
def vkl():
for led in form.leds:
#осторожно! Одинаковые названия у объектов Led и JSON.
led.setStyleSheet(f"background-color: yellow;")
led_data[led.objectName()]["red"] = 255
led_data[led.objectName()]["green"] = 255
led_data[led.objectName()]["blue"] = 0
# Config logging
print("Found arguments:")
for i in conf:
print(i)
def vikl():
for led in form.leds:
#осторожно! Одинаковые названия у объектов Led и JSON.
led.setStyleSheet(f"background-color: black;")
led_data[led.objectName()]["red"] = 0
led_data[led.objectName()]["green"] = 0
led_data[led.objectName()]["blue"] = 0
return conf
def color():
color = QColorDialog.getColor() #получение цвета от диалога
if color.isValid(): #проверка наличия цвета и применение его над изображением программы
palette = QPalette()
palette.setColor(QPalette.Button, color)
form.color_b.setPalette(palette)
for led in form.leds:
led.setStyleSheet(f"background-color: {color.name()};")
led_data[led.objectName()]["red"] = color.red()
led_data[led.objectName()]["green"] = color.green()
led_data[led.objectName()]["blue"] = color.blue()
class AppWindow(QMainWindow):
def led_clicked(event):
colors = led.palette().color(QPalette.Background)
sender= QApplication.widgetAt(event.globalPos()) #QApplication.widgetAt() для получения текущего виджета, на котором было совершено действие
color = QColorDialog.getColor()
if color.isValid():
#caution! Naming will be the same for a Led and JSON led objects
sender.setStyleSheet(f"background-color: {color.name()};")
led_data[sender.objectName()]["red"] = color.red()
led_data[sender.objectName()]["green"] = color.green()
led_data[sender.objectName()]["blue"] = color.blue()
else:
form.leds.setStyleSheet(" ")
"""
Main application window class
"""
def sendMessage():
url = form.lineEdit.text()
labels_dict = {}
labels_dict["LED1"] = form.label_20.isVisible()
labels_dict["LED2"] = form.label_26.isVisible()
labels_dict["LED3"] = form.label_29.isVisible()
json_data = {}
json_data.update(led_data)
json_data.update(labels_dict)
json_str = json.dumps(json_data, separators=(',', ':'))
def __init__(self, conf: dict):
super(AppWindow, self).__init__()
# Parse .ui file and init window UI with it
self.ui = uic.loadUi(os.path.join(conf['uiPath'], conf['uiFileName']), self)
# Setup network management
self.nam = QNetworkAccessManager()
# Init plotter
self.plot = Plot(self.ui.plotwidget)
# Set window title
self.setWindowTitle("Lr4")
# Load RGB leds default values
self.rgb_leds_state = conf["defaultRGBLeds"]
# TODO: установить цвета RGB светодиодов по умолчанию
# Init request url editors
self.ui.lineEdit.setText("http://" + conf['defaultMDNSname'] + conf['defaultPostRoute'])
self.ui.lineEdit_2.setText("http://" + conf['defaultMDNSname'] + conf['defaultGetRoute'])
# Init LED controls
for i in range(1, 4):
getattr(self.ui, f"pushButton_sensor{i}").setCheckable(True) # вкл режим перекл
getattr(self.ui, f"pushButton_sensor{i}").setChecked(False) # нач значение
getattr(self.ui, f"label_sensor_megalka{i}").hide()
getattr(self.ui, f"pushButton_sensor{i}").toggled["bool"].connect(lambda val: self.handle_toggle_lamp(f"LED{i}", val))
# TODO: Инициализировать остальные элементы из conf
# Init request manual triggers
self.ui.pushButton_send_post.clicked.connect(self.send_message) # привязываем функцию к кнопке Отправить
self.ui.pushButton_send_get.clicked.connect(self.get_value_from_macket) # привязываем функцию к кнопке Отправить GET запрос
# TODO: добавить обработчики для смены цвета 8 светодиодов и ещё, чего не хватает (см. папку на gdrive и интерфейс приложения)
def handle_toggle_lamp(self, Name: str, checked: bool):
"""
Переключение одноцветных лампочек
"""
n = Name[-1]
# TODO: переписать названия пушей и лейблов
if checked:
getattr(self.ui, 'pushButton_' + n).setText("Выкл")
getattr(self.ui, 'label_' + n + '4').hide()
getattr(self.ui, 'label_' + n + '0').show()
print("I'm worked too much") # TODO: нужно что-то более осмысленное
else:
getattr(self.ui, 'label_' + n + '0').hide()
getattr(self.ui, 'label_' + n + '4').show()
getattr(self.ui, 'pushButton_' + n).setText("Вкл")
print ("I'm worked too") # TODO: нужно что-то более осмысленное
def collect_lamps_state(self) -> dict:
lamps_state = {}
for i in range(1,4):
lamps_state[f"LED{i}"] = getattr(self.ui, f"label_sensor_megalka{i}").isVisible()
return lamps_state
def compose_post_json_data(self) -> dict:
json_data = {}
json_data.update(self.rgb_leds_state)
json_data.update(self.collect_lamps_state())
# TODO: добавить отправку остальных данных (см. grdive и поля, которые парсит приложение из stand_code/mDNS_ESP8266.ino)
return json_data
def log_post_request(self, url, json_data):
json_str = json.dumps(json_data, separators=(',', ':'))
data_str = 'Я отправляю текст на: ' + url + '\n'+ json_str
self.ui.textEdit.setPlainText(data_str)
data_str = 'Я отправляю текст на: ' + url + '\n'+ json_str
form.textEdit.setPlainText(data_str)
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} #заголовки запроса
response = requests.post(url, json=json_data, headers=headers) #отправка POST запроса
def send_message(self):
"""
POST запрос
"""
# Get inputed url
url = self.ui.lineEdit.text()
# compose body
json_data = self.compose_post_json_data()
self.log_post_request(url, json_data)
data = QJsonDocument(json_data)
# Create request object
request = QNetworkRequest(QUrl(url))
# Set request headers
request.setHeader(QNetworkRequest.ContentTypeHeader, 'application/json')
request.setRawHeader(b'Accept', b'text/plain')
# Do POST request and store its reply object
self.post_reply = self.nam.post(request, data.toJson())
# Set callback for request finishing signal
self.post_reply.finished.connect(self.handle_post_reply)
# обрабатываем ответ и выводим его в поле вывода
if response.status_code == 200:
form.textEdit.append('О, все прошло успешно!\n') #выводим значение в line_edit
else:
form.textEdit.append('Ошибка при получении данных')
def get_value_from_macket(self): ###переименовать элементы, которые находятся в for'aх
def getValueFromMacket():
url = form.lineEdit_2.text()
response = requests.get(url) #отправка POST запроса
# обрабатываем ответ и выводим его в поле вывода
if response.status_code == 200:
data=response.json() #функция преобразования данных в объект питон
#Parse the date
form.textEdit.append(json.dumps(data)) #выводим значение в line_edit
form.textEdit.append(str(data["temperature"]))
"""
GET запрос
"""
url = self.ui.lineEdit_2.text()
request = QNetworkRequest(QUrl(url))
self.get_reply = self.nam.get(request)
# Set callback for request finishing signal
self.get_reply.finished.connect(self.handle_get_reply)
# TODO: если кто хочет поупражняться в понимании, что здесь происходит, напишите аннотацию для всех аргументов функции, используя typing.Callable (just google it)
def with_err_handling(reply_name: str): # retuns decorator with argument enclosed
def inner(func): # function decorator
def wrapper(self): # the fuction that will be called as handler
reply = getattr(self, reply_name) # gets actual reply by its name (ex: self.get_reply)
err = reply.error()
if err == QNetworkReply.NetworkError.NoError:
self.ui.textEdit.append('О, все прошло успешно!')
func(self) # calling actual handler
else:
status_code = reply.attribute(QNetworkRequest.Attribute.HttpStatusCodeAttribute)
self.ui.textEdit.append(f'Ошибка при получении данных: {status_code}')
return wrapper
return inner
@with_err_handling('post_reply')
def handle_post_reply(self):
res = self.post_reply.readAll().data()
self.ui.textEdit.append(res.decode())
@with_err_handling('get_reply')
def handle_get_reply(self):
res = self.get_reply.readAll().data()
data = json.loads(res) #функция преобразования данных в объект питон
self.ui.textEdit.append(json.dumps(data, separators=(',', ':'))) #выводим значение в line_edit
self.ui.textEdit.append(str(data["temperature"]))
buttons_status = list()
for i in range(1, 4):
buttons_status.append(data[f"button{i}State"])
""""
bs = list()
bs.append(data["button1State"])
bs.append(data["button2State"])
bs.append(data["button3State"])
"""
self.update_buttons(buttons_status)
update_button(bs)
self.update_pressure(data["pressure"])
update_pressure(data["pressure"])
color_l=("ambient_light", "red_light", "green_light", "blue_light", "lightness","acceleration_x", "acceleration_y", "acceleration_z" )
form.lcdNumber_7.display(data["ambient_light"])
form.lcdNumber_2.display (data["red_light"])
form.lcdNumber_3.display (data["green_light"])
form.lcdNumber_4.display (data["blue_light"])
form.lcdNumber_8.display (data["lightness"])
form.lcdNumber_5.display(data['acceleration_x'])
form.lcdNumber_9.display (data['acceleration_y'])
form.lcdNumber_6.display (data['acceleration_z'])
# TODO: переименовать lcdNumber_N в lcdNumber_....._light
for s in color_l:
getattr(self.ui, "lcdNumber_" + s).display(data[s])
"""
self.ui.lcdNumber_7.display(data["ambient_light"])
self.ui.lcdNumber_2.display (data["red_light"])
self.ui.lcdNumber_3.display (data["green_light"])
self.ui.lcdNumber_4.display (data["blue_light"])
self.ui.lcdNumber_8.display (data["lightness"])
self.ui.lcdNumber_5.display(data["acceleration_x"])
self.ui.lcdNumber_9.display (data["acceleration_y"])
self.ui.lcdNumber_6.display (data["acceleration_z"])
"""
for i in range(1,4):
self.handle_toggle_lamp[f"LED{i}", data[f"LED{i}"]]
self.plot.update(data["temperature"])
led1(data['LED1'])
led2(data['LED2'])
led3(data['LED3'])
valArr.pop(0)
valArr.append(data["temperature"])
print(valArr)
UpdatePlot(plot, valArr)
else:
form.textEdit.append('Ошибка при получении данных')
def update_buttons(self, bs):
for i in range(1, 4):
button_state = bs[i-1]
if button_state == 'True':
getattr(self.ui, f'on_{i}').show()
getattr(self.ui, f'off_{i}').hide()
else:
getattr(self.ui, f'on_{i}').hide()
getattr(self.ui, f'off_{i}').show()
#json.load(file) @ACHT! Method to convert Str to JSON
def update_pressure(self, p):
self.ui.lcd_pressure.display(p)
def update_pressure(p):
form.lcd_pressure.display(p)
def update_button (bs):
for i in range(1, 4):
button_state = bs[i-1]
if button_state == 'True':
getattr(form, f'on_{i}').show()
getattr(form, f'off_{i}').hide()
else:
getattr(form, f'on_{i}').hide()
getattr(form, f'off_{i}').show()
def UpdatePlot(plot, val):
x = list(range(1, len(valArr)+1))
bargraph = pg.BarGraphItem(x = x, height = val, width = 0.6, brush ='g')
plot.clear()
plot.addItem(bargraph)
def Plots(form, valArr):
widget = QWidget()
plot = pg.plot() #создает объект PlotWidget из библиотеки PyqtGraph
x = list(range(1, len(valArr)+1))
bargraph = pg.BarGraphItem(x = x, height = valArr, width = 0.6, brush ='g')
plot.addItem(bargraph)
# Creating a grid layout
layout = QGridLayout()
layout.addWidget(plot, 0,0)
form.plotwidget.setLayout(layout)
return plot
if __name__ == "__main__":
app = QApplication(sys.argv)
# Opening JSON file
f = open('config.json') #открывает файл 'config.json', загружает его содержимое в переменную 'conf' в формате словаря (dictionary) при помощи функции 'json.load()', а затем выводит все ключи словаря 'conf' при помощи цикла 'for'.
conf = json.load(open('config.json'))
f.close()
conf = read_conf()
print("Find an arguments:")
for i in conf:
print(i)
import sys
Form, Window = uic.loadUiType(conf['uiPath'] + conf['uiFileName'])
app = QApplication(sys.argv)# Создаем экземпляр QApplication и передаем параметры командной строки
window = Window()
form = Form()
form.setupUi(window)
window.show() # Окна скрыты по умолчанию!
window.setWindowTitle('Lr4') #nazvanie
form.pushButton.clicked.connect(sendMessage) #привязываем функцию к кнопке Отправить
form.lineEdit.setText("http://" + conf['defaultMDNSname'] + conf['defaultPostRoute'])
form.lineEdit_2.setText("http://" + conf['defaultMDNSname'] + conf['defaultGetRoute'])
form.pushButton_5.clicked.connect(getValueFromMacket) #привязываем функцию к кнопке Отправить GET запрос
win = AppWindow(conf)
win.show()
sys.exit(app.exec())
form.pushButton_2.setCheckable(True) #вкл режим перекл
form.pushButton_2.setChecked(False) #нач значение
form.label_20.hide()
form.pushButton_2.toggled["bool"].connect(led1)
form.pushButton_3.setCheckable(True) #вкл режим перекл
form.pushButton_3.setChecked(False) #нач значение
form.label_26.hide()
form.pushButton_3.toggled["bool"].connect(led2)
form.pushButton_4.setCheckable(True) #вкл режим перекл
form.pushButton_4.setChecked(False) #нач значение
form.label_29.hide()
form.pushButton_4.toggled["bool"].connect(led3)
form.on_1.hide()
form.on_2.hide()
form.on_3.hide()
form.lcdNumber.display(45)
form.leds = [form.leds1, form.leds2, form.leds3, form.leds4, form.leds5, form.leds6, form.leds7, form.leds8]
for led in form.leds:
led.mousePressEvent = led_clicked
timer = QTimer()
timer.setInterval(1000)
#Connect the timer to the update_pressure function
#TODO connect to getSensValue from macket
#timer.timeout.connect(update_pressure)
#timer.timeout.connect (update_button)
#timer.timeout.connect (update_light)
#timer.timeout.connect (update_acceleration)
timer.start()
form.vkl_b.clicked.connect(vkl)
form.vikl_b.clicked.connect(vikl)
form.color_b.clicked.connect(color)
plot = Plots(form, valArr)
sys.exit (app.exec_()) # Запуск цикла событий

27
main2
View File

@ -16,10 +16,10 @@ import pyqtgraph as pg
#import sys
colors = {} #переменная для работы с цветом, позже нам понадобится
last_clicked_label = None
last_clicked_label = None #Флаг
plotLen = 20
valArr = [20] * plotLen# список из 20 двадцаток
plot = None
plot = None #Флаг
"""
след функция принимает значение True/False, после осуществляет ветвление,
@ -36,10 +36,10 @@ plot = None
#объявить словарь для label_№? чтобы в дальнейшем к нему обращаться
def led1 (checked): #отвечает за включение первого светодиода
if checked: #класс form это класс нашей формы, то есть окна приложения
form.pushButton_2.setText("Выкл") #pushButton - для работы кнопок
form.pushButton_2.setText("Выкл") #pushButton - это экземпляры класса formдля работы кнопок
print("I'm worked too much")
form.label_24.hide() #label это текст на окне приложения и его прячем
form.label_20.show() # метод show(), для отображения виджета на экране
form.label_20.show() # к экземпляру класса form применяется метод show(), для отображения виджета на экране
else:
form.label_20.hide()
form.label_24.show()
@ -75,7 +75,7 @@ def led3 (checked): #отвечает за включение третьего
def updateLCD(): #функция,обновление дисплея, не принимает никаких значений
global temp #глобальная переменная для работы с дисплеем
form.lcdNumber.display(temp) # применяется метод display(temp),
form.lcdNumber.display(temp) # к экземпляру класса form применяется метод display(temp),
#откуда берется значение переменной temp неизвестно
def sed (): #проверка работы элемента
@ -113,8 +113,8 @@ def vikl():# функция аналогична vkl, только тут зна
led_data[led.objectName()]["blue"] = 0
def color(): #функция работы с отображением цвета в программе
color = QColorDialog.getColor() #получение цвета, color примает
if color.isValid(): #проверка цвета и применение его над изображением программы
color = QColorDialog.getColor() #получение цвета, color примает значение атрибута класса
if color.isValid(): #проверка наличия цвета и применение его над изображением программы
palette = QPalette()#экземпляр класса QPalette
palette.setColor(QPalette.Button, color) #применение метода setColor(кнопка, цвет ) к экземпляру
form.color_b.setPalette(palette)
@ -127,8 +127,8 @@ def color(): #функция работы с отображением цвета
def led_clicked(event):
colors = led.palette().color(QPalette.Background)
sender= QApplication.widgetAt(event.globalPos()) #QApplication.widgetAt() для получения текущего виджета, на котором было совершено действие
color = QColorDialog.getColor() #получение цвета, color примает значение
if color.isValid(): # применение метода к color для его проверки на
color = QColorDialog.getColor() #получение цвета, color примает значение атрибута класса
if color.isValid(): # применение метода к color для его проверки на соответствие
#caution! Naming will be the same for a Led and JSON led objects
sender.setStyleSheet(f"background-color: {color.name()};")
led_data[sender.objectName()]["red"] = color.red()
@ -137,9 +137,9 @@ def led_clicked(event):
else:
form.leds.setStyleSheet(" ")
def sendMessage():# отправка сообщений на через url
def sendMessage():# отправка сообщений на компьютер через url
url = form.lineEdit.text()
labels_dict = {}# формирование словаря: key-имя светодиода, value-
labels_dict = {}# формирование словаря: key-имя светодиода, value- значение экземпляра
labels_dict["LED1"] = form.label_20.isVisible()
labels_dict["LED2"] = form.label_26.isVisible()
labels_dict["LED3"] = form.label_29.isVisible()
@ -147,7 +147,8 @@ def sendMessage():# отправка сообщений на через url
json_data = {}# упаковка данных в json пакет из словарей led_data, labels_dict
json_data.update(led_data)
json_data.update(labels_dict)
json_str = json.dumps(json_data, separators=(',', ':'))# формирование строки, в формате json, из словаря json_data
json_str = json.dumps(json_data, separators=(',', ':'))# формирование строки, в формате json, из словаря json_data , которую
# разделили по наличию ','ИЛИ ':'
data_str = 'Я отправляю текст на: ' + url + '\n'+ json_str
form.textEdit.setPlainText(data_str) #оповещение об отправке текста (ранне сформированной json_str) на url
@ -238,7 +239,7 @@ def Plots(form, valArr):
bargraph = pg.BarGraphItem(x = x, height = valArr, width = 0.6, brush ='g')
plot.addItem(bargraph)
# Создаём grid layout, который отвечает за положение элемента
# Создаём grid layout, который отвечает за определение системы макета визуального представления данных
layout = QGridLayout()
layout.addWidget(plot, 0,0)
form.plotwidget.setLayout(layout)

View File

@ -1,257 +0,0 @@
{
"openapi": "3.0.0",
"info": {
"title": "Mocks",
"version": "1.0.0"
},
"servers": [
{
"url": "http://localhost:3001/"
}
],
"components": {
"schemas": {
"ValuesRGB": {
"type": "object",
"properties": {
"red": {
"type": "number"
},
"green": {
"type": "number"
},
"blue": {
"type": "number"
}
},
"required": [
"red",
"green",
"blue"
]
}
}
},
"paths": {
"/sensval": {
"get": {
"description": "",
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"LED1": {
"type": "boolean"
},
"LED2": {
"type": "boolean"
},
"LED3": {
"type": "boolean"
},
"button1State": {
"type": "boolean"
},
"button2State": {
"type": "boolean"
},
"button3State": {
"type": "boolean"
},
"temperature": {
"type": "number",
"format": "float"
},
"pressure": {
"type": "number",
"format": "float"
},
"ambient_light": {
"type": "number",
"format": "int32"
},
"red_light": {
"type": "number",
"format": "int32"
},
"green_light": {
"type": "number",
"format": "int32"
},
"blue_light": {
"type": "number",
"format": "int32"
},
"lightness": {
"type": "number",
"format": "int32"
},
"acceleration_x": {
"type": "number",
"format": "float"
},
"acceleration_y": {
"type": "number",
"format": "float"
},
"acceleration_z": {
"type": "number",
"format": "float"
},
"leds1": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds2": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds3": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds4": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds5": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds6": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds7": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds8": {
"$ref": "#/components/schemas/ValuesRGB"
}
},
"example": {
"LED1": false,
"LED2": true,
"LED3": false,
"button1State": true,
"button2State": false,
"button3State": true,
"temperature": 25,
"pressure": 100,
"ambient_light": 100,
"red_light": 200,
"green_light": 300,
"blue_light": 400,
"lightness": 500,
"acceleration_x": 0.1,
"acceleration_y": 0.2,
"acceleration_z": 0.3,
"leds1": {
"red": 100,
"green": 150,
"blue": 200
},
"leds2": {
"red": 100,
"green": 150,
"blue": 200
},
"leds3": {
"red": 100,
"green": 150,
"blue": 200
},
"leds4": {
"red": 100,
"green": 150,
"blue": 200
},
"leds5": {
"red": 100,
"green": 150,
"blue": 200
},
"leds6": {
"red": 100,
"green": 150,
"blue": 200
},
"leds7": {
"red": 100,
"green": 150,
"blue": 200
},
"leds8": {
"red": 100,
"green": 150,
"blue": 200
}
}
}
}
},
"headers": {}
}
}
}
},
"/postvalue": {
"post": {
"description": "",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"LED1": {
"type": "boolean"
},
"LED2": {
"type": "boolean"
},
"LED3": {
"type": "boolean"
},
"leds1": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds2": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds3": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds4": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds5": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds6": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds7": {
"$ref": "#/components/schemas/ValuesRGB"
},
"leds8": {
"$ref": "#/components/schemas/ValuesRGB"
}
}
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"text/plain": {
"example": "POST body was:\n{ }"
}
},
"headers": {}
}
}
}
}
}
}

View File

@ -1,115 +0,0 @@
{
"uuid": "5ea1e52b-5df9-4503-ab2c-6513fdc53d16",
"lastMigration": 27,
"name": "Mocks",
"endpointPrefix": "",
"latency": 0,
"port": 3001,
"hostname": "",
"folders": [],
"routes": [
{
"uuid": "ea43e328-6bbc-43ba-a12a-de222a28fd8b",
"type": "http",
"documentation": "",
"method": "get",
"endpoint": "sensval",
"responses": [
{
"uuid": "cead61d4-7745-455c-a3a9-cb8854cefcc2",
"body": "{\n \"LED1\": false,\n \"LED2\": true,\n \"LED3\": false,\n \"button1State\": true,\n \"button2State\": false,\n \"button3State\": true,\n \"temperature\": 25,\n \"pressure\": 100,\n \"ambient_light\": 100,\n \"red_light\": 200,\n \"green_light\": 300,\n \"blue_light\": 400,\n \"lightness\": 500,\n \"acceleration_x\": 0.1,\n \"acceleration_y\": 0.2,\n \"acceleration_z\": 0.3,\n \"leds1\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n },\n \"leds2\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n },\n \"leds3\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n },\n \"leds4\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n },\n \"leds5\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n },\n \"leds6\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n },\n \"leds7\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n },\n \"leds8\": {\n \"red\": 100,\n \"green\": 150,\n \"blue\": 200\n }\n}",
"latency": 0,
"statusCode": 200,
"label": "",
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"bodyType": "INLINE",
"filePath": "",
"databucketID": "",
"sendFileAsBody": false,
"rules": [],
"rulesOperator": "OR",
"disableTemplating": false,
"fallbackTo404": false,
"default": true
}
],
"enabled": true,
"responseMode": null
},
{
"uuid": "166a5c8a-d866-4e93-91c6-c9cf21fbbf04",
"type": "http",
"documentation": "",
"method": "post",
"endpoint": "postvalue",
"responses": [
{
"uuid": "a7ae227a-8ca7-49bc-8577-d30af6ee16e9",
"body": "POST body was:\n{{body}}",
"latency": 0,
"statusCode": 200,
"label": "",
"headers": [
{
"key": "Content-Type",
"value": "text/plain"
}
],
"bodyType": "INLINE",
"filePath": "",
"databucketID": "",
"sendFileAsBody": false,
"rules": [],
"rulesOperator": "OR",
"disableTemplating": false,
"fallbackTo404": false,
"default": true
}
],
"enabled": true,
"responseMode": null
}
],
"rootChildren": [
{
"type": "route",
"uuid": "ea43e328-6bbc-43ba-a12a-de222a28fd8b"
},
{
"type": "route",
"uuid": "166a5c8a-d866-4e93-91c6-c9cf21fbbf04"
}
],
"proxyMode": false,
"proxyHost": "",
"proxyRemovePrefix": false,
"tlsOptions": {
"enabled": false,
"type": "CERT",
"pfxPath": "",
"certPath": "",
"keyPath": "",
"caPath": "",
"passphrase": ""
},
"cors": true,
"headers": [],
"proxyReqHeaders": [
{
"key": "",
"value": ""
}
],
"proxyResHeaders": [
{
"key": "",
"value": ""
}
],
"data": []
}

43
plot.py
View File

@ -1,43 +0,0 @@
from PyQt5.QtWidgets import QGridLayout
import pyqtgraph as pg
class Plot():
"""
QT bar plot drawing class
"""
def __init__(self, widget, arr_len = 20, default_val = 20):
self.__arr_vals = [default_val] * arr_len # TODO: Инициализировать значениями из conf["temperature"]
self.__x = list(range(1, arr_len + 1))
self.__plot = pg.plot() #создает объект PlotWidget из библиотеки PyqtGraph
#PlotWidget — это один из базовых конструктовров класса pyqtgraph, отвечающий за работу с
#виджетами, то есть элементами интерфейса, выводящими небольшую информацию
self.__redraw_plot()
# Создаём grid layout, который отвечает за положение элемента
layout = QGridLayout()
layout.addWidget(self.__plot, 0,0)
widget.setLayout(layout)
def update(self, newVal: int):
arr_vals = self.__arr_vals
arr_vals.pop(0)
arr_vals.append(newVal)
self.__redraw_plot()
def __redraw_plot(self):
plot = self.__plot
bargraph = pg.BarGraphItem(x = self.__x, height = self.__arr_vals, width = 0.6, brush ='g')
plot.clear()
plot.addItem(bargraph)

View File

@ -1,16 +0,0 @@
certifi==2023.5.7
charset-normalizer==3.1.0
click==8.1.3
idna==3.4
numpy==1.24.3
PyQt5==5.15.9
pyqt5-plugins==5.15.9.2.3
PyQt5-Qt5==5.15.2
PyQt5-sip==12.12.1
pyqt5-tools==5.15.9.3.3
pyqtgraph==0.13.3
python-dotenv==1.0.0
qt5-applications==5.15.2.2.3
qt5-tools==5.15.2.1.3
requests==2.31.0
urllib3==2.0.2

View File

@ -26,7 +26,7 @@
<string>IoT pgrm v0_1_13</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="pushButton_send_post">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>1050</x>
@ -39,7 +39,7 @@
<string>SEND Post</string>
</property>
</widget>
<widget class="QLabel" name="label_url">
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>10</x>
@ -62,7 +62,7 @@
</rect>
</property>
</widget>
<widget class="QLabel" name="label_message">
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>10</x>
@ -91,7 +91,7 @@
<double>5.000000000000000</double>
</property>
</widget>
<widget class="QLabel" name="label_temp">
<widget class="QLabel" name="label_6">
<property name="geometry">
<rect>
<x>310</x>
@ -183,7 +183,7 @@
<enum>QLCDNumber::Flat</enum>
</property>
</widget>
<widget class="QLabel" name="label_r">
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>570</x>
@ -196,7 +196,7 @@
<string>R</string>
</property>
</widget>
<widget class="QLabel" name="label_g">
<widget class="QLabel" name="label_8">
<property name="geometry">
<rect>
<x>650</x>
@ -209,7 +209,7 @@
<string>G</string>
</property>
</widget>
<widget class="QLabel" name="label_b">
<widget class="QLabel" name="label_9">
<property name="geometry">
<rect>
<x>730</x>
@ -260,7 +260,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_sensor_megalka1">
<widget class="QLabel" name="label_20">
<property name="geometry">
<rect>
<x>390</x>
@ -279,7 +279,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_sensor_print1">
<widget class="QLabel" name="label_24">
<property name="enabled">
<bool>true</bool>
</property>
@ -301,7 +301,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="pushButton_sensor1">
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>390</x>
@ -314,7 +314,7 @@
<string>Вкл</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_sensor2">
<widget class="QPushButton" name="pushButton_3">
<property name="geometry">
<rect>
<x>480</x>
@ -327,7 +327,7 @@
<string>Вкл</string>
</property>
</widget>
<widget class="QLabel" name="label_sensor_megalka2">
<widget class="QLabel" name="label_26">
<property name="geometry">
<rect>
<x>480</x>
@ -346,7 +346,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_sensor_print2">
<widget class="QLabel" name="label_27">
<property name="geometry">
<rect>
<x>480</x>
@ -365,7 +365,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="pushButton_sensor3">
<widget class="QPushButton" name="pushButton_4">
<property name="geometry">
<rect>
<x>570</x>
@ -378,7 +378,7 @@
<string>Вкл</string>
</property>
</widget>
<widget class="QLabel" name="label_sensor_megalka3">
<widget class="QLabel" name="label_29">
<property name="geometry">
<rect>
<x>570</x>
@ -397,7 +397,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_sensor_print3">
<widget class="QLabel" name="label_31">
<property name="geometry">
<rect>
<x>570</x>
@ -492,7 +492,7 @@
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_pressure">
<widget class="QLabel" name="label_13">
<property name="geometry">
<rect>
<x>310</x>
@ -544,7 +544,7 @@
<double>5.000000000000000</double>
</property>
</widget>
<widget class="QLabel" name="label_illumination">
<widget class="QLabel" name="label_14">
<property name="geometry">
<rect>
<x>310</x>
@ -580,7 +580,7 @@
<double>5.000000000000000</double>
</property>
</widget>
<widget class="QLabel" name="label_illumination2">
<widget class="QLabel" name="label_15">
<property name="geometry">
<rect>
<x>310</x>
@ -600,7 +600,7 @@
<string>Освещенность</string>
</property>
</widget>
<widget class="QLabel" name="label_accelorometer">
<widget class="QLabel" name="label_34">
<property name="geometry">
<rect>
<x>310</x>
@ -896,7 +896,7 @@
<enum>QLCDNumber::Flat</enum>
</property>
</widget>
<widget class="QLabel" name="label_rgb_illumination">
<widget class="QLabel" name="label_16">
<property name="geometry">
<rect>
<x>310</x>
@ -916,7 +916,7 @@
<string>Освещенность</string>
</property>
</widget>
<widget class="QLabel" name="label_x">
<widget class="QLabel" name="label_10">
<property name="geometry">
<rect>
<x>570</x>
@ -929,7 +929,7 @@
<string>Х</string>
</property>
</widget>
<widget class="QLabel" name="label_y">
<widget class="QLabel" name="label_11">
<property name="geometry">
<rect>
<x>650</x>
@ -942,7 +942,7 @@
<string>Y</string>
</property>
</widget>
<widget class="QLabel" name="label_z">
<widget class="QLabel" name="label_12">
<property name="geometry">
<rect>
<x>730</x>
@ -955,11 +955,11 @@
<string>Z</string>
</property>
</widget>
<widget class="QLabel" name="lubel_tumblers">
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>900</x>
<y>70</y>
<y>60</y>
<width>81</width>
<height>20</height>
</rect>
@ -986,7 +986,7 @@
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_send_get">
<widget class="QPushButton" name="pushButton_5">
<property name="geometry">
<rect>
<x>1050</x>
@ -1002,9 +1002,9 @@
<widget class="QLineEdit" name="lineEdit_2">
<property name="geometry">
<rect>
<x>690</x>
<y>50</y>
<width>341</width>
<x>790</x>
<y>40</y>
<width>241</width>
<height>21</height>
</rect>
</property>
@ -1016,7 +1016,7 @@
<x>0</x>
<y>0</y>
<width>1185</width>
<height>22</height>
<height>21</height>
</rect>
</property>
</widget>

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui/PyQt_app.ui'
# Form implementation generated from reading ui file 'PyQt_app.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
@ -19,33 +19,33 @@ class Ui_MainWindow(object):
MainWindow.setMaximumSize(QtCore.QSize(1185, 622))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton_send_post = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_send_post.setGeometry(QtCore.QRect(1050, 10, 101, 21))
self.pushButton_send_post.setObjectName("pushButton_send_post")
self.label_url = QtWidgets.QLabel(self.centralwidget)
self.label_url.setGeometry(QtCore.QRect(10, 0, 51, 41))
self.label_url.setObjectName("label_url")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(1050, 10, 101, 21))
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(10, 0, 51, 41))
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(50, 10, 981, 21))
self.lineEdit.setObjectName("lineEdit")
self.label_message = QtWidgets.QLabel(self.centralwidget)
self.label_message.setGeometry(QtCore.QRect(10, 40, 71, 20))
self.label_message.setObjectName("label_message")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(10, 40, 71, 20))
self.label_2.setObjectName("label_2")
self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)
self.lcdNumber.setGeometry(QtCore.QRect(550, 190, 141, 41))
self.lcdNumber.setFrameShape(QtWidgets.QFrame.Box)
self.lcdNumber.setProperty("value", 5.0)
self.lcdNumber.setObjectName("lcdNumber")
self.label_temp = QtWidgets.QLabel(self.centralwidget)
self.label_temp.setGeometry(QtCore.QRect(310, 190, 211, 41))
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(310, 190, 211, 41))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_temp.setFont(font)
self.label_temp.setTextFormat(QtCore.Qt.AutoText)
self.label_temp.setScaledContents(False)
self.label_temp.setObjectName("label_temp")
self.label_6.setFont(font)
self.label_6.setTextFormat(QtCore.Qt.AutoText)
self.label_6.setScaledContents(False)
self.label_6.setObjectName("label_6")
self.lcdNumber_2 = QtWidgets.QLCDNumber(self.centralwidget)
self.lcdNumber_2.setGeometry(QtCore.QRect(540, 470, 81, 20))
font = QtGui.QFont()
@ -68,15 +68,15 @@ class Ui_MainWindow(object):
self.lcdNumber_4.setSmallDecimalPoint(False)
self.lcdNumber_4.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
self.lcdNumber_4.setObjectName("lcdNumber_4")
self.label_r = QtWidgets.QLabel(self.centralwidget)
self.label_r.setGeometry(QtCore.QRect(570, 500, 47, 13))
self.label_r.setObjectName("label_r")
self.label_g = QtWidgets.QLabel(self.centralwidget)
self.label_g.setGeometry(QtCore.QRect(650, 500, 47, 13))
self.label_g.setObjectName("label_g")
self.label_b = QtWidgets.QLabel(self.centralwidget)
self.label_b.setGeometry(QtCore.QRect(730, 500, 47, 13))
self.label_b.setObjectName("label_b")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(570, 500, 47, 13))
self.label_7.setObjectName("label_7")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(650, 500, 47, 13))
self.label_8.setObjectName("label_8")
self.label_9 = QtWidgets.QLabel(self.centralwidget)
self.label_9.setGeometry(QtCore.QRect(730, 500, 47, 13))
self.label_9.setObjectName("label_9")
self.off_1 = QtWidgets.QLabel(self.centralwidget)
self.off_1.setGeometry(QtCore.QRect(804, 100, 61, 51))
self.off_1.setText("")
@ -89,52 +89,52 @@ class Ui_MainWindow(object):
self.on_1.setPixmap(QtGui.QPixmap(":/img/ON.svg"))
self.on_1.setScaledContents(True)
self.on_1.setObjectName("on_1")
self.label_led_on1 = QtWidgets.QLabel(self.centralwidget)
self.label_led_on1.setGeometry(QtCore.QRect(390, 70, 61, 61))
self.label_led_on1.setText("")
self.label_led_on1.setPixmap(QtGui.QPixmap(":/img/led_on.svg"))
self.label_led_on1.setScaledContents(True)
self.label_led_on1.setObjectName("label_led_on1")
self.label_sensor_print1 = QtWidgets.QLabel(self.centralwidget)
self.label_sensor_print1.setEnabled(True)
self.label_sensor_print1.setGeometry(QtCore.QRect(390, 70, 61, 61))
self.label_sensor_print1.setText("")
self.label_sensor_print1.setPixmap(QtGui.QPixmap(":/img/led_off.svg"))
self.label_sensor_print1.setScaledContents(True)
self.label_sensor_print1.setObjectName("label_sensor_print1")
self.pushButton_sensor1 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_sensor1.setGeometry(QtCore.QRect(390, 140, 71, 21))
self.pushButton_sensor1.setObjectName("pushButton_sensor1")
self.pushButton_sensor2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_sensor2.setGeometry(QtCore.QRect(480, 140, 71, 21))
self.pushButton_sensor2.setObjectName("pushButton_sensor2")
self.label_led_on2 = QtWidgets.QLabel(self.centralwidget)
self.label_led_on2.setGeometry(QtCore.QRect(480, 70, 61, 61))
self.label_led_on2.setText("")
self.label_led_on2.setPixmap(QtGui.QPixmap(":/img/led_on.svg"))
self.label_led_on2.setScaledContents(True)
self.label_led_on2.setObjectName("label_led_on2")
self.label_sensor_print2 = QtWidgets.QLabel(self.centralwidget)
self.label_sensor_print2.setGeometry(QtCore.QRect(480, 70, 61, 61))
self.label_sensor_print2.setText("")
self.label_sensor_print2.setPixmap(QtGui.QPixmap(":/img/led_off.svg"))
self.label_sensor_print2.setScaledContents(True)
self.label_sensor_print2.setObjectName("label_sensor_print2")
self.pushButton_sensor3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_sensor3.setGeometry(QtCore.QRect(570, 140, 71, 21))
self.pushButton_sensor3.setObjectName("pushButton_sensor3")
self.label_led_on3 = QtWidgets.QLabel(self.centralwidget)
self.label_led_on3.setGeometry(QtCore.QRect(570, 70, 61, 61))
self.label_led_on3.setText("")
self.label_led_on3.setPixmap(QtGui.QPixmap(":/img/led_on.svg"))
self.label_led_on3.setScaledContents(True)
self.label_led_on3.setObjectName("label_led_on3")
self.label_sensor_print3 = QtWidgets.QLabel(self.centralwidget)
self.label_sensor_print3.setGeometry(QtCore.QRect(570, 70, 61, 61))
self.label_sensor_print3.setText("")
self.label_sensor_print3.setPixmap(QtGui.QPixmap(":/img/led_off.svg"))
self.label_sensor_print3.setScaledContents(True)
self.label_sensor_print3.setObjectName("label_sensor_print3")
self.label_20 = QtWidgets.QLabel(self.centralwidget)
self.label_20.setGeometry(QtCore.QRect(390, 70, 61, 61))
self.label_20.setText("")
self.label_20.setPixmap(QtGui.QPixmap(":/img/led_on.svg"))
self.label_20.setScaledContents(True)
self.label_20.setObjectName("label_20")
self.label_24 = QtWidgets.QLabel(self.centralwidget)
self.label_24.setEnabled(True)
self.label_24.setGeometry(QtCore.QRect(390, 70, 61, 61))
self.label_24.setText("")
self.label_24.setPixmap(QtGui.QPixmap(":/img/led_off.svg"))
self.label_24.setScaledContents(True)
self.label_24.setObjectName("label_24")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(390, 140, 71, 21))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(480, 140, 71, 21))
self.pushButton_3.setObjectName("pushButton_3")
self.label_26 = QtWidgets.QLabel(self.centralwidget)
self.label_26.setGeometry(QtCore.QRect(480, 70, 61, 61))
self.label_26.setText("")
self.label_26.setPixmap(QtGui.QPixmap(":/img/led_on.svg"))
self.label_26.setScaledContents(True)
self.label_26.setObjectName("label_26")
self.label_27 = QtWidgets.QLabel(self.centralwidget)
self.label_27.setGeometry(QtCore.QRect(480, 70, 61, 61))
self.label_27.setText("")
self.label_27.setPixmap(QtGui.QPixmap(":/img/led_off.svg"))
self.label_27.setScaledContents(True)
self.label_27.setObjectName("label_27")
self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_4.setGeometry(QtCore.QRect(570, 140, 71, 21))
self.pushButton_4.setObjectName("pushButton_4")
self.label_29 = QtWidgets.QLabel(self.centralwidget)
self.label_29.setGeometry(QtCore.QRect(570, 70, 61, 61))
self.label_29.setText("")
self.label_29.setPixmap(QtGui.QPixmap(":/img/led_on.svg"))
self.label_29.setScaledContents(True)
self.label_29.setObjectName("label_29")
self.label_31 = QtWidgets.QLabel(self.centralwidget)
self.label_31.setGeometry(QtCore.QRect(570, 70, 61, 61))
self.label_31.setText("")
self.label_31.setPixmap(QtGui.QPixmap(":/img/led_off.svg"))
self.label_31.setScaledContents(True)
self.label_31.setObjectName("label_31")
self.off_2 = QtWidgets.QLabel(self.centralwidget)
self.off_2.setGeometry(QtCore.QRect(904, 100, 61, 51))
self.off_2.setText("")
@ -159,14 +159,14 @@ class Ui_MainWindow(object):
self.on_3.setPixmap(QtGui.QPixmap(":/img/ON.svg"))
self.on_3.setScaledContents(True)
self.on_3.setObjectName("on_3")
self.label_pressure = QtWidgets.QLabel(self.centralwidget)
self.label_pressure.setGeometry(QtCore.QRect(310, 260, 211, 41))
self.label_13 = QtWidgets.QLabel(self.centralwidget)
self.label_13.setGeometry(QtCore.QRect(310, 260, 211, 41))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_pressure.setFont(font)
self.label_pressure.setObjectName("label_pressure")
self.label_13.setFont(font)
self.label_13.setObjectName("label_13")
self.lcd_pressure = QtWidgets.QLCDNumber(self.centralwidget)
self.lcd_pressure.setGeometry(QtCore.QRect(550, 260, 141, 41))
self.lcd_pressure.setFrameShape(QtWidgets.QFrame.Box)
@ -177,35 +177,35 @@ class Ui_MainWindow(object):
self.lcdNumber_7.setFrameShape(QtWidgets.QFrame.Box)
self.lcdNumber_7.setProperty("value", 5.0)
self.lcdNumber_7.setObjectName("lcdNumber_7")
self.label_illumination = QtWidgets.QLabel(self.centralwidget)
self.label_illumination.setGeometry(QtCore.QRect(310, 330, 211, 41))
self.label_14 = QtWidgets.QLabel(self.centralwidget)
self.label_14.setGeometry(QtCore.QRect(310, 330, 211, 41))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_illumination.setFont(font)
self.label_illumination.setObjectName("label_illumination")
self.label_14.setFont(font)
self.label_14.setObjectName("label_14")
self.lcdNumber_8 = QtWidgets.QLCDNumber(self.centralwidget)
self.lcdNumber_8.setGeometry(QtCore.QRect(550, 400, 141, 41))
self.lcdNumber_8.setFrameShape(QtWidgets.QFrame.Box)
self.lcdNumber_8.setProperty("value", 5.0)
self.lcdNumber_8.setObjectName("lcdNumber_8")
self.label_illumination2 = QtWidgets.QLabel(self.centralwidget)
self.label_illumination2.setGeometry(QtCore.QRect(310, 400, 211, 41))
self.label_15 = QtWidgets.QLabel(self.centralwidget)
self.label_15.setGeometry(QtCore.QRect(310, 400, 211, 41))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_illumination2.setFont(font)
self.label_illumination2.setObjectName("label_illumination2")
self.label_accelorometer = QtWidgets.QLabel(self.centralwidget)
self.label_accelorometer.setGeometry(QtCore.QRect(310, 520, 211, 41))
self.label_15.setFont(font)
self.label_15.setObjectName("label_15")
self.label_34 = QtWidgets.QLabel(self.centralwidget)
self.label_34.setGeometry(QtCore.QRect(310, 520, 211, 41))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_accelorometer.setFont(font)
self.label_accelorometer.setObjectName("label_accelorometer")
self.label_34.setFont(font)
self.label_34.setObjectName("label_34")
self.vkl_b = QtWidgets.QPushButton(self.centralwidget)
self.vkl_b.setGeometry(QtCore.QRect(1099, 482, 75, 23))
self.vkl_b.setObjectName("vkl_b")
@ -293,44 +293,44 @@ class Ui_MainWindow(object):
self.lcdNumber_9.setStyleSheet("color: rgb(0, 0, 0);")
self.lcdNumber_9.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
self.lcdNumber_9.setObjectName("lcdNumber_9")
self.label_rgb_illumination = QtWidgets.QLabel(self.centralwidget)
self.label_rgb_illumination.setGeometry(QtCore.QRect(310, 460, 211, 41))
self.label_16 = QtWidgets.QLabel(self.centralwidget)
self.label_16.setGeometry(QtCore.QRect(310, 460, 211, 41))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.label_rgb_illumination.setFont(font)
self.label_rgb_illumination.setObjectName("label_rgb_illumination")
self.label_x = QtWidgets.QLabel(self.centralwidget)
self.label_x.setGeometry(QtCore.QRect(570, 560, 47, 13))
self.label_x.setObjectName("label_x")
self.label_y = QtWidgets.QLabel(self.centralwidget)
self.label_y.setGeometry(QtCore.QRect(650, 560, 47, 13))
self.label_y.setObjectName("label_y")
self.label_z = QtWidgets.QLabel(self.centralwidget)
self.label_z.setGeometry(QtCore.QRect(730, 560, 47, 13))
self.label_z.setObjectName("label_z")
self.lubel_tumblers = QtWidgets.QLabel(self.centralwidget)
self.lubel_tumblers.setGeometry(QtCore.QRect(900, 70, 81, 20))
self.label_16.setFont(font)
self.label_16.setObjectName("label_16")
self.label_10 = QtWidgets.QLabel(self.centralwidget)
self.label_10.setGeometry(QtCore.QRect(570, 560, 47, 13))
self.label_10.setObjectName("label_10")
self.label_11 = QtWidgets.QLabel(self.centralwidget)
self.label_11.setGeometry(QtCore.QRect(650, 560, 47, 13))
self.label_11.setObjectName("label_11")
self.label_12 = QtWidgets.QLabel(self.centralwidget)
self.label_12.setGeometry(QtCore.QRect(730, 560, 47, 13))
self.label_12.setObjectName("label_12")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(900, 60, 81, 20))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.lubel_tumblers.setFont(font)
self.lubel_tumblers.setObjectName("lubel_tumblers")
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(10, 60, 291, 531))
self.textEdit.setObjectName("textEdit")
self.pushButton_send_get = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_send_get.setGeometry(QtCore.QRect(1050, 50, 101, 21))
self.pushButton_send_get.setObjectName("pushButton_send_get")
self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_5.setGeometry(QtCore.QRect(1050, 50, 101, 21))
self.pushButton_5.setObjectName("pushButton_5")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(690, 50, 341, 21))
self.lineEdit_2.setGeometry(QtCore.QRect(790, 40, 241, 21))
self.lineEdit_2.setObjectName("lineEdit_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1185, 22))
self.menubar.setGeometry(QtCore.QRect(0, 0, 1185, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
@ -340,29 +340,39 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "IoT pgrm v0_1_13"))
self.pushButton_send_post.setText(_translate("MainWindow", "SEND Post"))
self.label_url.setText(_translate("MainWindow", "URL"))
self.label_message.setText(_translate("MainWindow", "Body message"))
self.label_temp.setText(_translate("MainWindow", "Температура"))
self.pushButton.setText(_translate("MainWindow", "SEND Post"))
self.label.setText(_translate("MainWindow", "URL"))
self.label_2.setText(_translate("MainWindow", "Body message"))
self.label_6.setText(_translate("MainWindow", "Температура"))
self.lcdNumber_2.setToolTip(_translate("MainWindow", "<html><head/><body><p><br/></p></body></html>"))
self.label_r.setText(_translate("MainWindow", "R"))
self.label_g.setText(_translate("MainWindow", "G"))
self.label_b.setText(_translate("MainWindow", "B"))
self.pushButton_sensor1.setText(_translate("MainWindow", "Вкл"))
self.pushButton_sensor2.setText(_translate("MainWindow", "Вкл"))
self.pushButton_sensor3.setText(_translate("MainWindow", "Вкл"))
self.label_pressure.setText(_translate("MainWindow", "Давление"))
self.label_illumination.setText(_translate("MainWindow", "Освещенность"))
self.label_illumination2.setText(_translate("MainWindow", "Освещенность"))
self.label_accelorometer.setText(_translate("MainWindow", "Акселлерометр"))
self.label_7.setText(_translate("MainWindow", "R"))
self.label_8.setText(_translate("MainWindow", "G"))
self.label_9.setText(_translate("MainWindow", "B"))
self.pushButton_2.setText(_translate("MainWindow", "Вкл"))
self.pushButton_3.setText(_translate("MainWindow", "Вкл"))
self.pushButton_4.setText(_translate("MainWindow", "Вкл"))
self.label_13.setText(_translate("MainWindow", "Давление"))
self.label_14.setText(_translate("MainWindow", "Освещенность"))
self.label_15.setText(_translate("MainWindow", "Освещенность"))
self.label_34.setText(_translate("MainWindow", "Акселлерометр"))
self.vkl_b.setText(_translate("MainWindow", "Вкл"))
self.vikl_b.setText(_translate("MainWindow", "Выкл"))
self.color_b.setText(_translate("MainWindow", "Цвет"))
self.lcdNumber_5.setToolTip(_translate("MainWindow", "<html><head/><body><p><br/></p></body></html>"))
self.label_rgb_illumination.setText(_translate("MainWindow", "Освещенность"))
self.label_x.setText(_translate("MainWindow", "Х"))
self.label_y.setText(_translate("MainWindow", "Y"))
self.label_z.setText(_translate("MainWindow", "Z"))
self.lubel_tumblers.setText(_translate("MainWindow", "Тумблеры"))
self.pushButton_send_get.setText(_translate("MainWindow", "SEND Get request"))
self.label_16.setText(_translate("MainWindow", "Освещенность"))
self.label_10.setText(_translate("MainWindow", "Х"))
self.label_11.setText(_translate("MainWindow", "Y"))
self.label_12.setText(_translate("MainWindow", "Z"))
self.label_4.setText(_translate("MainWindow", "Тумблеры"))
self.pushButton_5.setText(_translate("MainWindow", "SEND Get request"))
import Res_rc
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

View File

@ -22,7 +22,7 @@ label_26 = label_sensor_megalka2
label_29 = label_sensor_megalka3
pushButton = pushButton_send_post
pushButton_5 = pushButton_send_get
pushButton_5 = pushButton_send_get_request
pushButton_2 = pushButton_sensor1
pushButton_3 = pushButton_sensor2
pushButton_4 = pushButton_sensor3