Как задать нескольким значениям из QDoubleSpinBox уникальные переменные при их обновлении?

У меня есть отдельных .py файл с интерфейсом содержащий несколько QDoubleSpinBox.

Я написал отдельный функционал, который при изменении значения в виджете input_overall_1 присвоит это значение в переменную txt.

Как реализовать присвоение уникальных переменных для всех виджетов? Возможно через цикл и список, или как-то ещё.

import Inter_Input_Blasting as interf
from PyQt6 import QtCore,QtWidgets,QtGui

class MainWindow(QtWidgets.QMainWindow):

    def on_clicked(self):
        print("Button Pushed")

    def __init__(self,parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = interf.Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.calc_button.clicked.connect(self.on_clicked)

        self.ui.input_overall_1.valueChanged.connect(self.gather_data)

    def gather_data(self):
        txt = self.ui.input_overall_1.value()
        print(txt)


if __name__== "__main__":
    import sys
    app = interf.QtWidgets.QApplication(sys.argv)
    Form = MainWindow()
    Form.show()
    sys.exit(app.exec())

Также возможно кто-нибудь даст совет возможно ли реализовать в интерфейсе добавление виджетов или их удаление?

Интерейс Ui_MainWindow (использую QtDesigner):

from PyQt6 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(640, 480)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.input_overall_1 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.input_overall_1.setAutoFillBackground(False)
        self.input_overall_1.setWrapping(True)
        self.input_overall_1.setFrame(True)
        self.input_overall_1.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.input_overall_1.setButtonSymbols(QtWidgets.QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.input_overall_1.setSpecialValueText("")
        self.input_overall_1.setCorrectionMode(QtWidgets.QAbstractSpinBox.CorrectionMode.CorrectToPreviousValue)
        self.input_overall_1.setPrefix("")
        self.input_overall_1.setSuffix("")
        self.input_overall_1.setMaximum(3000.99)
        self.input_overall_1.setObjectName("input_overall_1")
        self.gridLayout.addWidget(self.input_overall_1, 0, 0, 1, 1)
        self.input_overall_2 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.input_overall_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.input_overall_2.setButtonSymbols(QtWidgets.QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.input_overall_2.setPrefix("")
        self.input_overall_2.setSuffix("")
        self.input_overall_2.setMaximum(3000.99)
        self.input_overall_2.setObjectName("input_overall_2")
        self.gridLayout.addWidget(self.input_overall_2, 1, 0, 1, 1)
        self.input_overall_3 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.input_overall_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.input_overall_3.setButtonSymbols(QtWidgets.QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.input_overall_3.setPrefix("")
        self.input_overall_3.setSuffix("")
        self.input_overall_3.setMaximum(3000.99)
        self.input_overall_3.setObjectName("input_overall_3")
        self.gridLayout.addWidget(self.input_overall_3, 2, 0, 1, 1)
        self.calc_button = QtWidgets.QPushButton(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(12)
        self.calc_button.setFont(font)
        self.calc_button.setStyleSheet("background-color: rgb(213, 213, 213);")
        self.calc_button.setObjectName("calc_button")
        self.gridLayout.addWidget(self.calc_button, 3, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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.calc_button.setText(_translate("MainWindow", "Расчёт"))

Ответы (2 шт):

Автор решения: Alexander Chernin

Например, при помощи такой щикарной вещицы как словарь

class MainWindow(QtWidgets.QMainWindow):

    def __init__(self,parent=None):
        #...
        self.values = {} # или = dict()
        # Здесь v - это новое значение из соответствующего QDoubleSpinBox
        self.ui.input_overall_1.valueChanged.connect(lambda v: self.gather_data("overall_1", v))
        self.ui.input_overall_2.valueChanged.connect(lambda v: self.gather_data("overall_2", v))
        # и так далее

    def gather_data(self, srcName, value):
        self.values[srcName] = value
→ Ссылка
Автор решения: S. Nick

Попробуйте так

'''
from PyQt6 import QtCore, QtGui, QtWidgets
'''
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(640, 480)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.input_overall_1 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.input_overall_1.setAutoFillBackground(False)
        self.input_overall_1.setWrapping(True)
        self.input_overall_1.setFrame(True)
        self.input_overall_1.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.input_overall_1.setButtonSymbols(QtWidgets.QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.input_overall_1.setSpecialValueText("")
        self.input_overall_1.setCorrectionMode(QtWidgets.QAbstractSpinBox.CorrectionMode.CorrectToPreviousValue)
        self.input_overall_1.setPrefix("")
        self.input_overall_1.setSuffix("")
        self.input_overall_1.setMaximum(3000.99)
        self.input_overall_1.setObjectName("input_overall_1")
        self.gridLayout.addWidget(self.input_overall_1, 0, 0, 1, 1)
        self.input_overall_2 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.input_overall_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.input_overall_2.setButtonSymbols(QtWidgets.QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.input_overall_2.setPrefix("")
        self.input_overall_2.setSuffix("")
        self.input_overall_2.setMaximum(3000.99)
        self.input_overall_2.setObjectName("input_overall_2")
        self.gridLayout.addWidget(self.input_overall_2, 1, 0, 1, 1)
        self.input_overall_3 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.input_overall_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.input_overall_3.setButtonSymbols(QtWidgets.QAbstractSpinBox.ButtonSymbols.NoButtons)
        self.input_overall_3.setPrefix("")
        self.input_overall_3.setSuffix("")
        self.input_overall_3.setMaximum(3000.99)
        self.input_overall_3.setObjectName("input_overall_3")
        self.gridLayout.addWidget(self.input_overall_3, 2, 0, 1, 1)
        self.calc_button = QtWidgets.QPushButton(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(12)
        self.calc_button.setFont(font)
        self.calc_button.setStyleSheet("background-color: rgb(213, 213, 213);")
        self.calc_button.setObjectName("calc_button")
        self.gridLayout.addWidget(self.calc_button, 3, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        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.calc_button.setText(_translate("MainWindow", "Расчёт"))
        
        
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.setupUi(self)
        
        self.doubleSpinBoxs = self.findChildren(QtWidgets.QDoubleSpinBox)
        #print(f'doubleSpinBoxs = {doubleSpinBoxs}') 
        
        for dsb in self.doubleSpinBoxs:
            dsb.valueChanged.connect(
                lambda val, dsb=dsb: self.gather_data(val, dsb))

        self.calc_button.clicked.connect(self.on_clicked)        

    def on_clicked(self):
        rez = 0
        for dsb in self.doubleSpinBoxs:
            rez += dsb.value()
        print(f"Button Pushed: rez = {rez}")

    def gather_data(self, val, dsb):
        txt = dsb.value()
        print(f'{dsb.objectName()}: {val} <----> {txt}')


if __name__== "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = MainWindow()
    Form.show()
    sys.exit(app.exec())

введите сюда описание изображения

→ Ссылка