Создал(а) 'main2'
This commit is contained in:
parent
d319a70749
commit
7b71cdd0c5
299
main2
Normal file
299
main2
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
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 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 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
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Opening JSON file
|
||||||
|
f = open('config.json') #открывает файл 'config.json', загружает его содержимое в переменную 'conf' в формате словаря (dictionary) при помощи функции 'json.load()', а затем выводит все ключи словаря 'conf' при помощи цикла 'for'.
|
||||||
|
conf = json.load(open('config.json'))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
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 запрос
|
||||||
|
|
||||||
|
|
||||||
|
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_()) # Запуск цикла событий
|
Loading…
x
Reference in New Issue
Block a user