Как передать массив данных из динамически сформированных QLabel и QDoubleSpinBox?

Как передать массив данных из динамически сформированных QLabel и QDoubleSpinBox в переменные x_points и y_points
из функцию def samovirav(self)?

from PyQt5 import QtCore , QtGui , QtWidgets
from PyQt5.Qt import *
import sys
import scipy
from PyQt5.QtWidgets import QLabel , QLineEdit
from scipy import integrate
from control.matlab import *
import control
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
import scipy.optimize as opt

from Designer.Massiv import DoubleSpinBox


class Ui_MainWindow ( object ) :
    def setupUi(self , MainWindow) :
        MainWindow.setObjectName ( "MainWindow" )
        MainWindow.resize ( 1400 , 900 )
        MainWindow.setMinimumSize ( QtCore.QSize ( 1400 , 900 ) )
        self.centralwidget = QtWidgets.QWidget ( MainWindow )
        self.centralwidget.setObjectName ( "centralwidget" )
        self.gridLayout = QtWidgets.QGridLayout ( self.centralwidget )
        self.gridLayout.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.gridLayout.setHorizontalSpacing ( 7 )
        self.gridLayout.setVerticalSpacing ( 0 )
        self.gridLayout.setObjectName ( "gridLayout" )
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout ()
        self.horizontalLayout_4.setObjectName ( "horizontalLayout_4" )

        # groupBox
        self.groupBox = QtWidgets.QGroupBox ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 10 )
        font.setBold ( True )
        font.setUnderline ( False )
        font.setWeight ( 75 )
        self.groupBox.setFont ( font )
        self.groupBox.setInputMethodHints ( QtCore.Qt.ImhNone )
        self.groupBox.setAlignment ( QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop )
        self.groupBox.setFlat ( False )
        self.groupBox.setCheckable ( False )
        self.groupBox.setChecked ( False )
        self.groupBox.setObjectName ( "groupBox" )

        self.groupBox.setStyleSheet ( "background-color: #e6c4c0;" )  # +++

        self.formLayoutWidget = QtWidgets.QWidget ( self.groupBox )
        self.formLayoutWidget.setGeometry ( QtCore.QRect ( 10 , 60 , 311 , 188 ) )
        self.formLayoutWidget.setObjectName ( "formLayoutWidget" )
        self.formLayout_2 = QtWidgets.QFormLayout ( self.formLayoutWidget )
        self.formLayout_2.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.formLayout_2.setHorizontalSpacing ( 6 )
        self.formLayout_2.setVerticalSpacing ( 12 )
        self.formLayout_2.setObjectName ( "formLayout_2" )
        self.Label = QtWidgets.QLabel ( self.formLayoutWidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Expanding )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.Label.sizePolicy ().hasHeightForWidth () )
        self.Label.setSizePolicy ( sizePolicy )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label.setFont ( font )
        self.Label.setObjectName ( "Label" )
        self.formLayout_2.setWidget ( 0 , QtWidgets.QFormLayout.LabelRole , self.Label )
        self.DoubleSpinBox = QtWidgets.QDoubleSpinBox ( self.formLayoutWidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Expanding )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.DoubleSpinBox.sizePolicy ().hasHeightForWidth () )
        self.DoubleSpinBox.setSizePolicy ( sizePolicy )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.DoubleSpinBox.setFont ( font )
        self.DoubleSpinBox.setObjectName ( "DoubleSpinBox" )
        self.formLayout_2.setWidget ( 0 , QtWidgets.QFormLayout.FieldRole , self.DoubleSpinBox )
        self.Label_2 = QtWidgets.QLabel ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label_2.setFont ( font )
        self.Label_2.setObjectName ( "Label_2" )
        self.formLayout_2.setWidget ( 1 , QtWidgets.QFormLayout.LabelRole , self.Label_2 )
        self.DoubleSpinBox_2 = QtWidgets.QDoubleSpinBox ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.DoubleSpinBox_2.setFont ( font )
        self.DoubleSpinBox_2.setObjectName ( "DoubleSpinBox_2" )
        self.formLayout_2.setWidget ( 1 , QtWidgets.QFormLayout.FieldRole , self.DoubleSpinBox_2 )
        self.Label_3 = QtWidgets.QLabel ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label_3.setFont ( font )
        self.Label_3.setObjectName ( "Label_3" )
        self.formLayout_2.setWidget ( 2 , QtWidgets.QFormLayout.LabelRole , self.Label_3 )
        self.DoubleSpinBox_3 = QtWidgets.QDoubleSpinBox ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.DoubleSpinBox_3.setFont ( font )
        self.DoubleSpinBox_3.setObjectName ( "DoubleSpinBox_3" )
        self.formLayout_2.setWidget ( 2 , QtWidgets.QFormLayout.FieldRole , self.DoubleSpinBox_3 )
        self.Label_4 = QtWidgets.QLabel ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label_4.setFont ( font )
        self.Label_4.setObjectName ( "Label_4" )
        self.formLayout_2.setWidget ( 3 , QtWidgets.QFormLayout.LabelRole , self.Label_4 )
        self.SpinBox = QtWidgets.QSpinBox ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.SpinBox.setFont ( font )
        self.SpinBox.setObjectName ( "SpinBox" )
        self.formLayout_2.setWidget ( 3 , QtWidgets.QFormLayout.FieldRole , self.SpinBox )
        self.pushButton = QtWidgets.QPushButton ( self.formLayoutWidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Fixed )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.pushButton.sizePolicy ().hasHeightForWidth () )
        self.pushButton.setSizePolicy ( sizePolicy )
        font = QtGui.QFont ()
        font.setPointSize ( 9 )
        font.setBold ( False )
        font.setItalic ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        font.setStrikeOut ( False )
        font.setKerning ( False )
        self.pushButton.setFont ( font )
        self.pushButton.setObjectName ( "pushButton" )
        self.formLayout_2.setWidget ( 4 , QtWidgets.QFormLayout.SpanningRole , self.pushButton )

        # !!! vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

        self.gridLayoutWidget = QtWidgets.QWidget ()  # --- self.groupBox
        #        self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 260, 311, 31))    # ---
        self.gridLayoutWidget.setObjectName ( "gridLayoutWidget" )

        self.gridLayoutWidget.setStyleSheet ( "background-color: #d8f8b7;" )  # +++

        self.gridLayout_2 = QtWidgets.QGridLayout ( self.gridLayoutWidget )
        self.gridLayout_2.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.gridLayout_2.setVerticalSpacing ( 10 )
        self.gridLayout_2.setObjectName ( "gridLayout_2" )
        self.label = QtWidgets.QLabel ( self.gridLayoutWidget )
        self.label.setAlignment ( QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop )
        self.label.setObjectName ( "label" )
        self.gridLayout_2.addWidget ( self.label , 0 , 0 , 1 , 1 )
        self.label_2 = QtWidgets.QLabel ( self.gridLayoutWidget )
        self.label_2.setAlignment ( QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop )
        self.label_2.setObjectName ( "label_2" )
        self.gridLayout_2.addWidget ( self.label_2 , 0 , 1 , 1 , 1 )

        # +++ -------->  vvvvvvvvvvvvvvvvvvvvvvvvv <----------------------------------------
        scroll = QScrollArea ( self.groupBox )  # +++
        scroll.setGeometry ( QtCore.QRect ( 10 , 215 , 311 , 200 ) )  # +++
        scroll.setWidgetResizable ( True )  # +++
        scroll.setWidget ( self.gridLayoutWidget )  # +++

        self.horizontalLayout_4.addWidget ( self.groupBox )

        self.groupBox_2 = QtWidgets.QGroupBox ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 10 )
        font.setBold ( True )
        font.setWeight ( 75 )
        self.groupBox_2.setFont ( font )
        self.groupBox_2.setFlat ( False )
        self.groupBox_2.setObjectName ( "groupBox_2" )
        self.layoutWidget = QtWidgets.QWidget ( self.groupBox_2 )
        self.layoutWidget.setGeometry ( QtCore.QRect ( 20 , 60 , 273 , 201 ) )
        self.layoutWidget.setObjectName ( "layoutWidget" )
        self.verticalLayout_2 = QtWidgets.QVBoxLayout ( self.layoutWidget )
        self.verticalLayout_2.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.verticalLayout_2.setSpacing ( 10 )
        self.verticalLayout_2.setObjectName ( "verticalLayout_2" )
        self.rB1 = QtWidgets.QRadioButton ( self.layoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        self.rB1.setFont ( font )
        self.rB1.setObjectName ( "rB1" )
        self.verticalLayout_2.addWidget ( self.rB1 )
        self.rB2 = QtWidgets.QRadioButton ( self.layoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        self.rB2.setFont ( font )
        self.rB2.setObjectName ( "rB2" )
        self.verticalLayout_2.addWidget ( self.rB2 )
        self.rB3 = QtWidgets.QRadioButton ( self.layoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        self.rB3.setFont ( font )
        self.rB3.setObjectName ( "rB3" )
        self.verticalLayout_2.addWidget ( self.rB3 )
        self.pushButton_2 = QtWidgets.QPushButton ( self.layoutWidget )
        self.pushButton_2.setEnabled ( True )
        font = QtGui.QFont ()
        font.setPointSize ( 9 )
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        font.setKerning ( False )
        self.pushButton_2.setFont ( font )
        self.pushButton_2.setObjectName ( "pushButton_2" )
        self.verticalLayout_2.addWidget ( self.pushButton_2 )
        self.horizontalLayout_4.addWidget ( self.groupBox_2 )
        self.gridLayout.addLayout ( self.horizontalLayout_4 , 2 , 0 , 1 , 1 )
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout ()
        self.horizontalLayout_3.setObjectName ( "horizontalLayout_3" )
        self.groupBox_3 = QtWidgets.QGroupBox ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 10 )
        font.setBold ( True )
        font.setWeight ( 75 )
        self.groupBox_3.setFont ( font )
        self.groupBox_3.setObjectName ( "groupBox_3" )
        self.widget = QtWidgets.QWidget ( self.groupBox_3 )
        self.widget.setGeometry ( QtCore.QRect ( 0 , 20 , 501 , 191 ) )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Expanding )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.widget.sizePolicy ().hasHeightForWidth () )
        self.widget.setSizePolicy ( sizePolicy )
        self.widget.setObjectName ( "widget" )
        self.horizontalLayout_3.addWidget ( self.groupBox_3 )
        self.gridLayout.addLayout ( self.horizontalLayout_3 , 4 , 0 , 1 , 1 )
        self.label_3 = QtWidgets.QLabel ( self.centralwidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Minimum , QtWidgets.QSizePolicy.Preferred )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.label_3.sizePolicy ().hasHeightForWidth () )
        self.label_3.setSizePolicy ( sizePolicy )
        self.label_3.setMinimumSize ( QtCore.QSize ( 0 , 35 ) )
        self.label_3.setMaximumSize ( QtCore.QSize ( 16777215 , 35 ) )
        font = QtGui.QFont ()
        font.setPointSize ( 12 )
        font.setBold ( True )
        font.setWeight ( 75 )
        font.setKerning ( False )
        self.label_3.setFont ( font )
        self.label_3.setStyleSheet ( "background-color: rgb(255, 255, 255);" )
        self.label_3.setFrameShape ( QtWidgets.QFrame.StyledPanel )
        self.label_3.setFrameShadow ( QtWidgets.QFrame.Raised )
        self.label_3.setAlignment ( QtCore.Qt.AlignCenter )
        self.label_3.setObjectName ( "label_3" )
        self.gridLayout.addWidget ( self.label_3 , 1 , 0 , 1 , 1 )
        self.label_4 = QtWidgets.QLabel ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 12 )
        font.setBold ( True )
        font.setWeight ( 75 )
        font.setKerning ( False )
        self.label_4.setFont ( font )
        self.label_4.setStyleSheet ( "background-color: rgb(255, 255, 255);" )
        self.label_4.setFrameShape ( QtWidgets.QFrame.StyledPanel )
        self.label_4.setFrameShadow ( QtWidgets.QFrame.Raised )
        self.label_4.setAlignment ( QtCore.Qt.AlignCenter )
        self.label_4.setObjectName ( "label_4" )
        self.gridLayout.addWidget ( self.label_4 , 1 , 1 , 1 , 1 )
        MainWindow.setCentralWidget ( self.centralwidget )
        self.menubar = QtWidgets.QMenuBar ( MainWindow )
        self.menubar.setGeometry ( QtCore.QRect ( 0 , 0 , 1400 , 26 ) )
        self.menubar.setObjectName ( "menubar" )
        MainWindow.setMenuBar ( self.menubar )

        self.retranslateUi ( MainWindow )
        QtCore.QMetaObject.connectSlotsByName ( MainWindow )

    def retranslateUi(self , MainWindow) :
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle ( _translate ( "MainWindow" , "MainWindow" ) )
        self.groupBox.setTitle ( _translate ( "MainWindow" , "Ввод кривой разгона" ) )
        self.Label.setText ( _translate ( "MainWindow" , "Входное воздействие:" ) )
        self.Label_2.setText ( _translate ( "MainWindow" , "Величина запаздывания:" ) )
        self.Label_3.setText ( _translate ( "MainWindow" , "Шаг" ) )
        self.Label_4.setText ( _translate ( "MainWindow" , "Количество точек:" ) )
        self.pushButton.setText ( _translate ( "MainWindow" , "Получить форму" ) )
        self.label.setText ( _translate ( "MainWindow" , "Время" ) )
        self.label_2.setText ( _translate ( "MainWindow" , "Выход" ) )
        self.groupBox_2.setTitle ( _translate ( "MainWindow" , "Тип разгоной характеристики" ) )
        self.rB1.setText ( _translate ( "MainWindow" , "Объект с самовыравниванием" ) )
        self.rB2.setText ( _translate ( "MainWindow" , "Объект без самовыравнивания" ) )
        self.rB3.setText ( _translate ( "MainWindow" , "Колебательный" ) )
        self.pushButton_2.setText ( _translate ( "MainWindow" , "Расчет коэффициента" ) )
        self.groupBox_3.setTitle ( _translate ( "MainWindow" , "Кривая разгона" ) )
        self.label_3.setText ( _translate ( "MainWindow" , "Идентификация объекта" ) )
        self.label_4.setText ( _translate ( "MainWindow" , "Расчет настроек регулятора" ) )


class MainWindow ( QtWidgets.QMainWindow , Ui_MainWindow ) :
    def __init__(self) :
        super ().__init__ ()
        self.setupUi ( self )

        self.gridLayout_2.setRowStretch ( 100 , 1 )  # +++

        # self.pushButton.clicked.connect ( self.kp )

        #        self.DoubleSpinBox.textChanged.connect( self.kp )   # Эта функция была введена в Qt 5.14.
        #        self.DoubleSpinBox_2.textChanged.connect( self.td ) # Эта функция была введена в Qt 5.14.
        self.DoubleSpinBox.valueChanged.connect ( self.kp )  # +++
        self.DoubleSpinBox_2.valueChanged.connect ( self.td )  # +++

        self.pushButton_2.clicked.connect ( self.RB )
        self.DoubleSpinBox_3.valueChanged.connect ( self.valStep)
        self.DoubleSpinBox_3.valueChanged.connect ( self.myForm )
        self.SpinBox.valueChanged.connect ( self.myForm )
        #self.pushButton.clicked.connect ( self.myForm )

    def kp(self) :
        kp = self.DoubleSpinBox.text ()
        print ( f'kp = {kp}' )  # (kp)
        return kp  # ?

    def td(self) :
        td = self.DoubleSpinBox_2.text ()
        print ( f'td = {td}' )  # (td)
        return td  # ?

    def samovirav(self) :
        x_points = [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16]
        y_points = [0 , 0 , 0.125 , 0.3 , 0.45 , 0.55 , 0.65 , 0.725 , 0.8 , 0.85 , 0.89 , 0.91 , 0.95 , 0.96 , 0.975 ,
                    0.985 , 1]

        plt.plot ( x_points , y_points )
        plt.grid ( True )
        plt.show ()

    def RB(self) :
        if self.rB1.isChecked () :
            self.samovirav ()

    def valStep(self , value) :
        pass
        print ( f'value = {value}' )
        # print(f"ObjectName: '{self.sender().objectName()}', Current Value: {value}")

    def myForm(self) :
        _step = self.DoubleSpinBox_3.value ()
        _points = self.SpinBox.value ()
        #print ( f'step = {_step}, point = {_points}' )

        # gridLayout -----> gridLayout_2
        # +++  ---------------->  vvvvvvvvvvv <----------------------------------------
        # !!!   countLayout = self.gridLayout.count ()
        countLayout = self.gridLayout_2.count ()  # !!! gridLayout_2
        if countLayout > 2 :
            for it in range ( countLayout - 2 ) :
                w = self.gridLayout_2.itemAt ( 2 ).widget ()
                self.gridLayout_2.removeWidget ( w )
                w.hide ()

        self.formWindow = []
        start_step = 0.00  # Начальная точка по времени
        for n in range ( _points ) :  # определяет колличество точек
            _time = QLabel ( self )
            _time.setText ( f"{start_step:.2f}" )
            out = QDoubleSpinBox ( self )
            self.gridLayout_2.addWidget ( _time , n + 1 , 0 , alignment=Qt.AlignCenter )
            self.gridLayout_2.addWidget ( out , n + 1 , 1 , alignment=Qt.AlignCenter )
            start_step += _step  # Счетчик для создания временных переменных

            self.formWindow.append ( [_time , out] )  # Завершение работы с виджетом


if __name__ == "__main__" :
    app = QtWidgets.QApplication ( sys.argv )
    w = MainWindow ()
    w.show ()
    sys.exit ( app.exec_ () )


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

Автор решения: S. Nick

Я изменил два метода samovirav() и RB()

import sys
import scipy
from PyQt5 import QtCore , QtGui , QtWidgets
from PyQt5.Qt import *
from PyQt5.QtWidgets import QLabel , QLineEdit
from scipy import integrate
from control.matlab import *
import control
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
import scipy.optimize as opt

# ? from Designer.Massiv import DoubleSpinBox ??????????????????


class Ui_MainWindow ( object ) :
    def setupUi(self , MainWindow) :
        MainWindow.setObjectName ( "MainWindow" )
        MainWindow.resize ( 1400 , 900 )
        MainWindow.setMinimumSize ( QtCore.QSize ( 1400 , 900 ) )
        self.centralwidget = QtWidgets.QWidget ( MainWindow )
        self.centralwidget.setObjectName ( "centralwidget" )
        self.gridLayout = QtWidgets.QGridLayout ( self.centralwidget )
        self.gridLayout.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.gridLayout.setHorizontalSpacing ( 7 )
        self.gridLayout.setVerticalSpacing ( 0 )
        self.gridLayout.setObjectName ( "gridLayout" )
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout ()
        self.horizontalLayout_4.setObjectName ( "horizontalLayout_4" )

        # groupBox
        self.groupBox = QtWidgets.QGroupBox ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 10 )
        font.setBold ( True )
        font.setUnderline ( False )
        font.setWeight ( 75 )
        self.groupBox.setFont ( font )
        self.groupBox.setInputMethodHints ( QtCore.Qt.ImhNone )
        self.groupBox.setAlignment ( QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop )
        self.groupBox.setFlat ( False )
        self.groupBox.setCheckable ( False )
        self.groupBox.setChecked ( False )
        self.groupBox.setObjectName ( "groupBox" )

        self.groupBox.setStyleSheet ( "background-color: #e6c4c0;" )  # +++

        self.formLayoutWidget = QtWidgets.QWidget ( self.groupBox )
        self.formLayoutWidget.setGeometry ( QtCore.QRect ( 10 , 60 , 311 , 188 ) )
        self.formLayoutWidget.setObjectName ( "formLayoutWidget" )
        self.formLayout_2 = QtWidgets.QFormLayout ( self.formLayoutWidget )
        self.formLayout_2.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.formLayout_2.setHorizontalSpacing ( 6 )
        self.formLayout_2.setVerticalSpacing ( 12 )
        self.formLayout_2.setObjectName ( "formLayout_2" )
        self.Label = QtWidgets.QLabel ( self.formLayoutWidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Expanding )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.Label.sizePolicy ().hasHeightForWidth () )
        self.Label.setSizePolicy ( sizePolicy )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label.setFont ( font )
        self.Label.setObjectName ( "Label" )
        self.formLayout_2.setWidget ( 0 , QtWidgets.QFormLayout.LabelRole , self.Label )
        self.DoubleSpinBox = QtWidgets.QDoubleSpinBox ( self.formLayoutWidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Expanding )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.DoubleSpinBox.sizePolicy ().hasHeightForWidth () )
        self.DoubleSpinBox.setSizePolicy ( sizePolicy )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.DoubleSpinBox.setFont ( font )
        self.DoubleSpinBox.setObjectName ( "DoubleSpinBox" )
        self.formLayout_2.setWidget ( 0 , QtWidgets.QFormLayout.FieldRole , self.DoubleSpinBox )
        self.Label_2 = QtWidgets.QLabel ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label_2.setFont ( font )
        self.Label_2.setObjectName ( "Label_2" )
        self.formLayout_2.setWidget ( 1 , QtWidgets.QFormLayout.LabelRole , self.Label_2 )
        self.DoubleSpinBox_2 = QtWidgets.QDoubleSpinBox ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.DoubleSpinBox_2.setFont ( font )
        self.DoubleSpinBox_2.setObjectName ( "DoubleSpinBox_2" )
        self.formLayout_2.setWidget ( 1 , QtWidgets.QFormLayout.FieldRole , self.DoubleSpinBox_2 )
        self.Label_3 = QtWidgets.QLabel ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label_3.setFont ( font )
        self.Label_3.setObjectName ( "Label_3" )
        self.formLayout_2.setWidget ( 2 , QtWidgets.QFormLayout.LabelRole , self.Label_3 )
        self.DoubleSpinBox_3 = QtWidgets.QDoubleSpinBox ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.DoubleSpinBox_3.setFont ( font )
        self.DoubleSpinBox_3.setObjectName ( "DoubleSpinBox_3" )
        self.formLayout_2.setWidget ( 2 , QtWidgets.QFormLayout.FieldRole , self.DoubleSpinBox_3 )
        self.Label_4 = QtWidgets.QLabel ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.Label_4.setFont ( font )
        self.Label_4.setObjectName ( "Label_4" )
        self.formLayout_2.setWidget ( 3 , QtWidgets.QFormLayout.LabelRole , self.Label_4 )
        self.SpinBox = QtWidgets.QSpinBox ( self.formLayoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setWeight ( 50 )
        self.SpinBox.setFont ( font )
        self.SpinBox.setObjectName ( "SpinBox" )
        self.formLayout_2.setWidget ( 3 , QtWidgets.QFormLayout.FieldRole , self.SpinBox )
        self.pushButton = QtWidgets.QPushButton ( self.formLayoutWidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Fixed )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.pushButton.sizePolicy ().hasHeightForWidth () )
        self.pushButton.setSizePolicy ( sizePolicy )
        font = QtGui.QFont ()
        font.setPointSize ( 9 )
        font.setBold ( False )
        font.setItalic ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        font.setStrikeOut ( False )
        font.setKerning ( False )
        self.pushButton.setFont ( font )
        self.pushButton.setObjectName ( "pushButton" )
        self.formLayout_2.setWidget ( 4 , QtWidgets.QFormLayout.SpanningRole , self.pushButton )
        self.gridLayoutWidget = QtWidgets.QWidget ()  # --- self.groupBox
        self.gridLayoutWidget.setObjectName ( "gridLayoutWidget" )
        self.gridLayoutWidget.setStyleSheet ( "background-color: #d8f8b7;" ) 
        self.gridLayout_2 = QtWidgets.QGridLayout ( self.gridLayoutWidget )
        self.gridLayout_2.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.gridLayout_2.setVerticalSpacing ( 10 )
        self.gridLayout_2.setObjectName ( "gridLayout_2" )
        self.label = QtWidgets.QLabel ( self.gridLayoutWidget )
        self.label.setAlignment ( QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop )
        self.label.setObjectName ( "label" )
        self.gridLayout_2.addWidget ( self.label , 0 , 0 , 1 , 1 )
        self.label_2 = QtWidgets.QLabel ( self.gridLayoutWidget )
        self.label_2.setAlignment ( QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop )
        self.label_2.setObjectName ( "label_2" )
        self.gridLayout_2.addWidget ( self.label_2 , 0 , 1 , 1 , 1 )

        scroll = QScrollArea ( self.groupBox )  # +++
        scroll.setGeometry ( QtCore.QRect ( 10 , 215 , 311 , 200 ) ) 
        scroll.setWidgetResizable ( True )  # +++
        scroll.setWidget ( self.gridLayoutWidget )  # +++

        self.horizontalLayout_4.addWidget ( self.groupBox )

        self.groupBox_2 = QtWidgets.QGroupBox ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 10 )
        font.setBold ( True )
        font.setWeight ( 75 )
        self.groupBox_2.setFont ( font )
        self.groupBox_2.setFlat ( False )
        self.groupBox_2.setObjectName ( "groupBox_2" )
        self.layoutWidget = QtWidgets.QWidget ( self.groupBox_2 )
        self.layoutWidget.setGeometry ( QtCore.QRect ( 20 , 60 , 273 , 201 ) )
        self.layoutWidget.setObjectName ( "layoutWidget" )
        self.verticalLayout_2 = QtWidgets.QVBoxLayout ( self.layoutWidget )
        self.verticalLayout_2.setContentsMargins ( 0 , 0 , 0 , 0 )
        self.verticalLayout_2.setSpacing ( 10 )
        self.verticalLayout_2.setObjectName ( "verticalLayout_2" )
        self.rB1 = QtWidgets.QRadioButton ( self.layoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        self.rB1.setFont ( font )
        self.rB1.setObjectName ( "rB1" )
        self.verticalLayout_2.addWidget ( self.rB1 )
        self.rB2 = QtWidgets.QRadioButton ( self.layoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        self.rB2.setFont ( font )
        self.rB2.setObjectName ( "rB2" )
        self.verticalLayout_2.addWidget ( self.rB2 )
        self.rB3 = QtWidgets.QRadioButton ( self.layoutWidget )
        font = QtGui.QFont ()
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        self.rB3.setFont ( font )
        self.rB3.setObjectName ( "rB3" )
        self.verticalLayout_2.addWidget ( self.rB3 )
        self.pushButton_2 = QtWidgets.QPushButton ( self.layoutWidget )
        self.pushButton_2.setEnabled ( True )
        font = QtGui.QFont ()
        font.setPointSize ( 9 )
        font.setBold ( False )
        font.setUnderline ( True )
        font.setWeight ( 50 )
        font.setKerning ( False )
        self.pushButton_2.setFont ( font )
        self.pushButton_2.setObjectName ( "pushButton_2" )
        self.verticalLayout_2.addWidget ( self.pushButton_2 )
        self.horizontalLayout_4.addWidget ( self.groupBox_2 )
        self.gridLayout.addLayout ( self.horizontalLayout_4 , 2 , 0 , 1 , 1 )
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout ()
        self.horizontalLayout_3.setObjectName ( "horizontalLayout_3" )
        self.groupBox_3 = QtWidgets.QGroupBox ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 10 )
        font.setBold ( True )
        font.setWeight ( 75 )
        self.groupBox_3.setFont ( font )
        self.groupBox_3.setObjectName ( "groupBox_3" )
        self.widget = QtWidgets.QWidget ( self.groupBox_3 )
        self.widget.setGeometry ( QtCore.QRect ( 0 , 20 , 501 , 191 ) )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Expanding , QtWidgets.QSizePolicy.Expanding )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.widget.sizePolicy ().hasHeightForWidth () )
        self.widget.setSizePolicy ( sizePolicy )
        self.widget.setObjectName ( "widget" )
        self.horizontalLayout_3.addWidget ( self.groupBox_3 )
        self.gridLayout.addLayout ( self.horizontalLayout_3 , 4 , 0 , 1 , 1 )
        self.label_3 = QtWidgets.QLabel ( self.centralwidget )
        sizePolicy = QtWidgets.QSizePolicy ( QtWidgets.QSizePolicy.Minimum , QtWidgets.QSizePolicy.Preferred )
        sizePolicy.setHorizontalStretch ( 0 )
        sizePolicy.setVerticalStretch ( 0 )
        sizePolicy.setHeightForWidth ( self.label_3.sizePolicy ().hasHeightForWidth () )
        self.label_3.setSizePolicy ( sizePolicy )
        self.label_3.setMinimumSize ( QtCore.QSize ( 0 , 35 ) )
        self.label_3.setMaximumSize ( QtCore.QSize ( 16777215 , 35 ) )
        font = QtGui.QFont ()
        font.setPointSize ( 12 )
        font.setBold ( True )
        font.setWeight ( 75 )
        font.setKerning ( False )
        self.label_3.setFont ( font )
        self.label_3.setStyleSheet ( "background-color: rgb(255, 255, 255);" )
        self.label_3.setFrameShape ( QtWidgets.QFrame.StyledPanel )
        self.label_3.setFrameShadow ( QtWidgets.QFrame.Raised )
        self.label_3.setAlignment ( QtCore.Qt.AlignCenter )
        self.label_3.setObjectName ( "label_3" )
        self.gridLayout.addWidget ( self.label_3 , 1 , 0 , 1 , 1 )
        self.label_4 = QtWidgets.QLabel ( self.centralwidget )
        font = QtGui.QFont ()
        font.setPointSize ( 12 )
        font.setBold ( True )
        font.setWeight ( 75 )
        font.setKerning ( False )
        self.label_4.setFont ( font )
        self.label_4.setStyleSheet ( "background-color: rgb(255, 255, 255);" )
        self.label_4.setFrameShape ( QtWidgets.QFrame.StyledPanel )
        self.label_4.setFrameShadow ( QtWidgets.QFrame.Raised )
        self.label_4.setAlignment ( QtCore.Qt.AlignCenter )
        self.label_4.setObjectName ( "label_4" )
        self.gridLayout.addWidget ( self.label_4 , 1 , 1 , 1 , 1 )
        MainWindow.setCentralWidget ( self.centralwidget )
        self.menubar = QtWidgets.QMenuBar ( MainWindow )
        self.menubar.setGeometry ( QtCore.QRect ( 0 , 0 , 1400 , 26 ) )
        self.menubar.setObjectName ( "menubar" )
        MainWindow.setMenuBar ( self.menubar )

        self.retranslateUi ( MainWindow )
        QtCore.QMetaObject.connectSlotsByName ( MainWindow )

    def retranslateUi(self , MainWindow) :
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle ( _translate ( "MainWindow" , "MainWindow" ) )
        self.groupBox.setTitle ( _translate ( "MainWindow" , "Ввод кривой разгона" ) )
        self.Label.setText ( _translate ( "MainWindow" , "Входное воздействие:" ) )
        self.Label_2.setText ( _translate ( "MainWindow" , "Величина запаздывания:" ) )
        self.Label_3.setText ( _translate ( "MainWindow" , "Шаг" ) )
        self.Label_4.setText ( _translate ( "MainWindow" , "Количество точек:" ) )
        self.pushButton.setText ( _translate ( "MainWindow" , "Получить форму" ) )
        self.label.setText ( _translate ( "MainWindow" , "Время" ) )
        self.label_2.setText ( _translate ( "MainWindow" , "Выход" ) )
        self.groupBox_2.setTitle ( _translate ( "MainWindow" , "Тип разгоной характеристики" ) )
        self.rB1.setText ( _translate ( "MainWindow" , "Объект с самовыравниванием" ) )
        self.rB2.setText ( _translate ( "MainWindow" , "Объект без самовыравнивания" ) )
        self.rB3.setText ( _translate ( "MainWindow" , "Колебательный" ) )
        self.pushButton_2.setText ( _translate ( "MainWindow" , "Расчет коэффициента" ) )
        self.groupBox_3.setTitle ( _translate ( "MainWindow" , "Кривая разгона" ) )
        self.label_3.setText ( _translate ( "MainWindow" , "Идентификация объекта" ) )
        self.label_4.setText ( _translate ( "MainWindow" , "Расчет настроек регулятора" ) )


class MainWindow ( QtWidgets.QMainWindow , Ui_MainWindow ) :
    def __init__(self) :
        super ().__init__ ()
        self.setupUi ( self )

        self.gridLayout_2.setRowStretch ( 100 , 1 )
        # self.pushButton.clicked.connect ( self.kp )

        #        self.DoubleSpinBox.textChanged.connect( self.kp )   # Эта функция была введена в Qt 5.14.
        #        self.DoubleSpinBox_2.textChanged.connect( self.td ) # Эта функция была введена в Qt 5.14.
        self.DoubleSpinBox.valueChanged.connect ( self.kp )
        self.DoubleSpinBox_2.valueChanged.connect ( self.td )

        self.pushButton_2.clicked.connect ( self.RB )
        self.DoubleSpinBox_3.valueChanged.connect ( self.valStep)
        self.DoubleSpinBox_3.valueChanged.connect ( self.myForm )
        self.SpinBox.valueChanged.connect ( self.myForm )
        #self.pushButton.clicked.connect ( self.myForm )

    def kp(self) :
        kp = self.DoubleSpinBox.text ()
        print ( f'kp = {kp}' )  # (kp)
        return kp  # ?

    def td(self) :
        td = self.DoubleSpinBox_2.text ()
        print ( f'td = {td}' )  # (td)
        return td  # ?

# +++  vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    def samovirav(self, x_points, y_points):
        plt.plot(x_points, y_points)
        plt.grid(True)
        plt.show()

    def RB(self) :
        x_points = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
        y_points = [0, 0, 0.125, 0.3, 0.45, 0.55, 0.65, 0.725, 0.8, 0.85, 
                    0.89, 0.91, 0.95, 0.96, 0.975, 0.985, 1]     
    
        if self.rB1.isChecked () :
            countLayout = self.gridLayout_2.count()  
            if countLayout > 2 :
                x_points = []
                y_points = []
                for it in range(countLayout - 2):
                    w = self.gridLayout_2.itemAt(it+2).widget()
                    if it % 2:
                        y_points.append(w.value())
                    else:
                        x_points.append(float(w.text()))
            self.samovirav(x_points, y_points)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

    def valStep(self , value) :
        pass
        print ( f'value = {value}' )
        # print(f"ObjectName: '{self.sender().objectName()}', Current Value: {value}")

    def myForm(self) :
        _step = self.DoubleSpinBox_3.value ()
        _points = self.SpinBox.value ()
        #print ( f'step = {_step}, point = {_points}' )

        # gridLayout -----> gridLayout_2
        # +++  ---------------->  vvvvvvvvvvv <----------------------------------------
        # !!!   countLayout = self.gridLayout.count ()
        countLayout = self.gridLayout_2.count ()  # !!! gridLayout_2
        if countLayout > 2 :
            for it in range ( countLayout - 2 ) :
                w = self.gridLayout_2.itemAt ( 2 ).widget ()
                self.gridLayout_2.removeWidget ( w )
                w.hide ()

        self.formWindow = []
        start_step = 0.00  # Начальная точка по времени
        for n in range ( _points ) :  # определяет колличество точек
            _time = QLabel ( self )
            _time.setText ( f"{start_step:.2f}" )
            out = QDoubleSpinBox ( self )
            self.gridLayout_2.addWidget ( _time , n + 1 , 0 , alignment=Qt.AlignCenter )
            self.gridLayout_2.addWidget ( out , n + 1 , 1 , alignment=Qt.AlignCenter )
            start_step += _step  # Счетчик для создания временных переменных

            self.formWindow.append ( [_time , out] )  # Завершение работы с виджетом


if __name__ == "__main__" :
    app = QtWidgets.QApplication ( sys.argv )
    w = MainWindow ()
    w.show ()
    sys.exit ( app.exec_ () )
    

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

→ Ссылка