Как передать массив данных из динамически сформированных 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_ () )
