From 2c889fb80b17140d72b3ebc3a858809c2c0c4ecd Mon Sep 17 00:00:00 2001 From: artem Date: Sun, 23 Apr 2023 13:30:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB(?= =?UTF-8?q?=D0=B0)=20=D0=BD=D0=B0=20'main2'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main2 | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/main2 b/main2 index 1480857..aeb2cff 100644 --- a/main2 +++ b/main2 @@ -21,6 +21,12 @@ plotLen = 20 valArr = [20] * plotLen# список из 20 двадцаток plot = None #Флаг +""" +след функция принимает значение True/False, после осуществляет ветвление, +изменяет текст экземпляра "Вкл/Вылк", скрывает или показывает некие лэйблы 20 или 24, +также выводит оповещение о срабатывании +""" + def led1 (checked): #отвечает за включение первого светодиода if checked: #класс form это класс нашей формы, то есть окна приложения form.pushButton_2.setText("Выкл") #pushButton - это экземпляры класса formдля работы кнопок @@ -60,14 +66,15 @@ def led3 (checked): #отвечает за включение третьего print ("I'm worked too") -def updateLCD(): #обновление дисплея - global temp #переменная для работы с дисплеем - form.lcdNumber.display(temp) +def updateLCD(): #функция,обновление дисплея, не принимает никаких значений + global temp #глобальная переменная для работы с дисплеем + form.lcdNumber.display(temp) # к экземпляру класса form применяется метод display(temp), + #откуда берется значение переменной temp неизвестно def sed (): #проверка работы элемента print ("I'm worked!") -led_data = { #список из словарей с начальными параметрами у светодиодов +led_data = { #список из словарей с начальными параметрами у светодиодов, надо сделать его атрибутом главного класса "leds1": {"red": 0, "green": 0, "blue": 0}, "leds2": {"red": 0, "green": 0, "blue": 0}, "leds3": {"red": 0, "green": 0, "blue": 0}, @@ -82,14 +89,15 @@ led_data = { #список из словарей с начальными пар # практически одинаковое название 3 двух функц def vkl(): - for led in form.leds: + for led in form.leds: #выставление значений светодиодов через экземпляр класса #осторожно! Одинаковые названия у объектов Led и JSON. led.setStyleSheet(f"background-color: yellow;") + #далее идет изменение списка из словарей led_data[led.objectName()-элемент списка]["red"-ключ]=225- значение ключа led_data[led.objectName()]["red"] = 255 # выставление "цвета" из промежутка 0-255? led_data[led.objectName()]["green"] = 255 led_data[led.objectName()]["blue"] = 0 -def vikl(): +def vikl():# функция аналогична vkl, только тут значение ключей принимает 0 for led in form.leds: #осторожно! Одинаковые названия у объектов Led и JSON. led.setStyleSheet(f"background-color: black;") @@ -98,10 +106,10 @@ def vikl(): led_data[led.objectName()]["blue"] = 0 def color(): #функция работы с отображением цвета в программе - color = QColorDialog.getColor() #получение цвета от диалога + color = QColorDialog.getColor() #получение цвета, color примает значение атрибута класса if color.isValid(): #проверка наличия цвета и применение его над изображением программы - palette = QPalette() - palette.setColor(QPalette.Button, color) + palette = QPalette()#экземпляр класса QPalette + palette.setColor(QPalette.Button, color) #применение метода setColor(кнопка, цвет ) к экземпляру form.color_b.setPalette(palette) for led in form.leds: led.setStyleSheet(f"background-color: {color.name()};") @@ -112,8 +120,8 @@ def color(): #функция работы с отображением цвета def led_clicked(event): colors = led.palette().color(QPalette.Background) sender= QApplication.widgetAt(event.globalPos()) #QApplication.widgetAt() для получения текущего виджета, на котором было совершено действие - color = QColorDialog.getColor() - if color.isValid(): + 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() @@ -122,20 +130,21 @@ def led_clicked(event): else: form.leds.setStyleSheet(" ") -def sendMessage(): +def sendMessage():# отправка сообщений на компьютер через url url = form.lineEdit.text() - labels_dict = {} - labels_dict["LED1"] = form.label_20.isVisible() + 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() - json_data = {} + 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_str = json.dumps(json_data, separators=(',', ':'))# формирование строки, в формате json, из словаря json_data , которую + # разделили по наличию ','ИЛИ ':' data_str = 'Я отправляю текст на: ' + url + '\n'+ json_str - form.textEdit.setPlainText(data_str) + form.textEdit.setPlainText(data_str) #оповещение об отправке текста (ранне сформированной json_str) на url headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} #заголовки запроса response = requests.post(url, json=json_data, headers=headers) #отправка POST запроса