Хочу написать программу для подсчёта стоимости досок на основе их размеров. При введении всех данных пользователь нажимает на кнопку "добавить", после чего данные о размере доски, количестве и объёма появляются в правой части экрана(в label с оранжевыми краями и строками внутри) по порядку. По задумке кнопки справа от этого label`a должны прибавлять или вычитать 1 из количества. Но по какой то причине при выполнении функции self.min_-but передаётся максимальное число из цикла где создаются кнопки "+" и "-".
Пробовал убирать функцию lamda и вводить отдельную переменную, прибавляя к ней 1 в начале цикла, также пытался найти решение в интернете(вводя название ошибки, библиотеку, ошибки при составлении выражений с lambda).
При выполнении выдаёт ошибку:
self.q[countik] = int(self.q.get(countik)) - 1
^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'
Предполагаю, что проблема в самом цикле создания кнопок "+" и "-"
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
count = 1
#функция с определённым стилем текста(нужен ля текста слева от полей ввода)
def setText(label, text):
label.setText(f"<html><head/><body><p align=\"center\"><span style=\" font-size:28pt; font-weight:600; color:#ff5500;\">{text}</span></p></body></html>")
#Создание интерфейса
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.resize(1920, 1080)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.bg = QtWidgets.QLabel(self.centralwidget)
self.bg.setGeometry(QtCore.QRect(0, 0, 1920, 1080))
self.bg.setStyleSheet("background-color: rgba(0, 0, 0, 190)")
self.bg.setText("")
self.bg_image = QtGui.QPixmap("C:\programming\drev\phone.jpg")
self.bg.setPixmap(self.bg_image)
self.top_label = QtWidgets.QLabel(self.centralwidget)
self.top_label.setGeometry(QtCore.QRect(330, 230, 820, 110))
self.label_width = QtWidgets.QLabel(self.centralwidget)
self.label_width.setGeometry(QtCore.QRect(390, 380, 200, 80))
self.label_height = QtWidgets.QLabel(self.centralwidget)
self.label_height.setGeometry(QtCore.QRect(390, 480, 200, 80))
self.label_length = QtWidgets.QLabel(self.centralwidget)
self.label_length.setGeometry(QtCore.QRect(390, 580, 200, 80))
self.label_quantity = QtWidgets.QLabel(self.centralwidget)
self.label_quantity.setGeometry(QtCore.QRect(390, 680, 200, 80))
self.label_rade = QtWidgets.QLabel(self.centralwidget)
self.label_rade.setGeometry(QtCore.QRect(390, 780, 200, 80))
self.pushButton_add = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_add.setGeometry(QtCore.QRect(390, 880, 200, 50))
self.pushButton_add.setStyleSheet("border-radius : 20px;\n"
"color: rgb(105, 0, 0);\n"
"font: 75 15pt \"MS Shell Dlg 2\";\n"
"background-color: rgb(255, 85, 0);")
self.label_list = QtWidgets.QLabel(self.centralwidget)
self.label_list.setGeometry(QtCore.QRect(1140, 260, 390, 590))
self.label_list.setStyleSheet("background-color: rgba(0, 0, 0, 100);\n"
"border-radius: 30px;\n"
"border: 5px solid red;")
self.pushButton_copy = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_copy.setGeometry(QtCore.QRect(1340, 880, 180, 50))
self.pushButton_copy.setStyleSheet("border-radius : 20px;\n"
"color: rgb(105, 0, 0);\n"
"font: 75 15pt \"MS Shell Dlg 2\";\n"
"background-color: rgb(255, 85, 0);")
self.editlines = {}
self.underlines = {}
for i in range(1 , 6):
self.editlines[i] = QtWidgets.QTextEdit(self.centralwidget)
self.editlines[i].setGeometry(QtCore.QRect(620, 303 + 100 * i, 220, 40))
self.editlines[i].setStyleSheet("background-color: rgba(255, 0, 0, 115);\n"
"border-radius: 5px;\n"
"font: 550 15pt \" MS Shell Dlg 2\";\n"
"color: rgb(255, 255, 255);")
self.underlines[i] = QtWidgets.QLabel(self.centralwidget)
self.underlines[i].setGeometry(QtCore.QRect(620, 343 + 100 * i, 220, 8))
self.underlines[i].setStyleSheet("background-color: rgb(255, 0, 0);\n"
"border-radius: 2px;")
self.underlines[i].setText("")
#объявление словарей
self.h = {}
self.w = {}
self.l = {}
self.q = {}
self.total_txt = {}
self.total_int = {}
self.btns = {}
self.btns2 = {}
self.lblls = {}
#предполагаемая проблема(цикл)
for i in range(1, 15):
self.lblls[i] = QtWidgets.QLabel(self.centralwidget)
self.lblls[i].setGeometry(QtCore.QRect(1160, 240 + 40 * i, 350, 20))
self.lblls[i].setText("")
self.lblls[i].setStyleSheet("background-color: rgba(0, 0, 0, 100);\n"
"border-radius: 5px;\n"
"border-width: 5px;\n"
"border-bottom-color: rgb(255, 0, 0);\n"
"")
self.btns[i] = QtWidgets.QPushButton(self.centralwidget)
self.btns[i].setGeometry(QtCore.QRect(1550, 235 + 40 * i, 30, 30))
self.btns[i].setStyleSheet("background-color: rgb(255, 0, 0);\n"
"border-radius: 5px;"
"font: 75 15pt \"MS Shell Dlg 2\";\n"
"color: rgb(255, 255, 255);\n"
"text-align: center;\n"
"")
self.btns[i].setText("-")
self.btns[i].clicked.connect(lambda: self.min_but(i))
self.btns2[i] = QtWidgets.QPushButton(self.centralwidget)
self.btns2[i].setGeometry(QtCore.QRect(1600, 235 + 40 * i, 30, 30))
self.btns2[i].setStyleSheet("background-color: rgb(255, 0, 0);\n"
"border-radius: 5px;"
"font: 75 15pt \"MS Shell Dlg 2\";\n"
"color: rgb(255, 255, 255);\n"
"text-align: center;\n"
"")
self.btns2[i].setText("+")</spoiler>
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.pushButton_add.clicked.connect(self.save)
#изменение текста
def retranslateUi(self, MainWindow):
global _translate
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle("Хлебный Мякиш")
setText(self.label_width, 'Ширина')
setText(self.label_height, 'Высота')
setText(self.label_length, 'Длина')
setText(self.label_quantity, 'Кол-во')
setText(self.label_rade, 'Сорт')
self.top_label.setText("<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; color:#ff5500;\">Компания</span></p></body></html>")
self.pushButton_add.setText("Добавить")
self.pushButton_copy.setText("Скопировать")
#функция для кнопок "-"
def min_but(self, countik):
print(countik)
print(self.q)
print(self.q.get(countik))
self.q[countik] = int(self.q.get(countik)) - 1
self.textEdit_quantity.setText(str(self.q[countik]))
self.lblls[countik].setText(f"<html><head/><body><p align=\"left\"><span style=\" font-size:12pt; font-weight:600; color:#ff5500;\">{self.total_txt[countik] + ' x' + str(self.q[countik]) + ' = ' + str(self.total_int[countik])}</span></p></body></html>")
#функция для кнопки "добавить"
def save(self):
try:
global count
self.w[count] = self.editlines[1].toPlainText()
self.h[count] = self.editlines[2].toPlainText()
self.l[count] = self.editlines[3].toPlainText()
self.q[count] = self.editlines[4].toPlainText()
self.total_txt[count] = self.h[count] + 'x' + self.w[count] + 'x' + self.l[count]
self.total_int[count] = ((int(self.w[count]) / 1000) * (int(self.h[count]) / 1000) * int(self.l[count])) * int(self.q[count])
self.lblls[count].setText(f"<html><head/><body><p align=\"left\"><span style=\" font-size:12pt; font-weight:600; color:#ff5500;\">{self.total_txt[count] + ' x' + self.q[count] + ' = ' + str(round(self.total_int[count], 8))}</span></p></body></html>")
count += 1
print(self.q)
except:
print('Error!')
#запуск приложения
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
MainWindow.showFullScreen()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())