mirror of
https://github.com/shizand/statapp.git
synced 2025-04-01 23:23:45 +03:00
добавлена генерация отклика
This commit is contained in:
parent
8682ba0be2
commit
b8c6b0f7df
24
statapp/generate_window.py
Normal file
24
statapp/generate_window.py
Normal file
@ -0,0 +1,24 @@
|
||||
from PySide6.QtCore import Slot
|
||||
from PySide6.QtGui import QIntValidator
|
||||
from PySide6.QtWidgets import QDialog
|
||||
|
||||
from statapp.ui.ui_generate_window import Ui_GenerateWindow
|
||||
|
||||
|
||||
class GenerateWindow(QDialog):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.deviation = None
|
||||
self.mat = None
|
||||
self.count = None
|
||||
self.ui = Ui_GenerateWindow()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
@Slot()
|
||||
def on_generatePushButton_clicked(self):
|
||||
|
||||
self.count = self.ui.countSpinBox.value()
|
||||
self.mat = self.ui.matSpinBox.value()
|
||||
self.deviation = self.ui.deviationSpinBox.value()
|
||||
|
||||
self.accept()
|
@ -1,5 +1,8 @@
|
||||
import numpy as np
|
||||
from PySide6.QtCore import Slot
|
||||
from PySide6.QtWidgets import QMainWindow
|
||||
|
||||
from statapp.generate_window import GenerateWindow
|
||||
from statapp.models.data_model import DataModel
|
||||
from statapp.ui.ui_main_window import Ui_MainWindow
|
||||
|
||||
@ -12,3 +15,12 @@ class MainWindow(QMainWindow):
|
||||
|
||||
self.model = DataModel()
|
||||
self.ui.tableView.setModel(self.model)
|
||||
|
||||
@Slot()
|
||||
def on_generateYaction_triggered(self):
|
||||
gw = GenerateWindow()
|
||||
if gw.exec():
|
||||
y = np.random.normal(gw.mat, gw.deviation, size=(gw.count, 1))
|
||||
|
||||
# self.model._data = y
|
||||
self.model.updateAllData(y)
|
||||
|
@ -4,11 +4,16 @@ from PySide6.QtCore import Qt
|
||||
|
||||
|
||||
class DataModel(QtCore.QAbstractTableModel):
|
||||
def __init__(self, data=np.array([[1, 2, 3], [4, 5, 6]])):
|
||||
def __init__(self, data=np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)):
|
||||
super().__init__()
|
||||
|
||||
self._data = data
|
||||
|
||||
def updateAllData(self, data):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
self._data = data
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def rowCount(self, index):
|
||||
return self._data.shape[0]
|
||||
|
||||
@ -32,7 +37,7 @@ class DataModel(QtCore.QAbstractTableModel):
|
||||
def setData(self, index, value, role):
|
||||
if role == Qt.EditRole:
|
||||
try:
|
||||
value = int(value)
|
||||
value = float(value)
|
||||
except ValueError:
|
||||
return False
|
||||
self._data[index.row(), index.column()] = value
|
||||
@ -40,7 +45,8 @@ class DataModel(QtCore.QAbstractTableModel):
|
||||
return False
|
||||
|
||||
def data(self, index, role):
|
||||
if role == Qt.DisplayRole:
|
||||
return int(self._data[index.row(), index.column()])
|
||||
if role == Qt.DisplayRole or role == Qt.EditRole:
|
||||
# ?
|
||||
return float(self._data[index.row(), index.column()])
|
||||
|
||||
return None
|
||||
|
77
statapp/ui/generate_window.ui
Normal file
77
statapp/ui/generate_window.ui
Normal file
@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>GenerateWindow</class>
|
||||
<widget class="QDialog" name="GenerateWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>503</width>
|
||||
<height>381</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="generatePushButton">
|
||||
<property name="text">
|
||||
<string>Сгенерировать</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Математическое ожидание</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Среднеквадратичное отклонение</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="matSpinBox"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Количество наблюдений</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QSpinBox" name="countSpinBox">
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QDoubleSpinBox" name="deviationSpinBox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>countSpinBox</tabstop>
|
||||
<tabstop>matSpinBox</tabstop>
|
||||
<tabstop>deviationSpinBox</tabstop>
|
||||
<tabstop>generatePushButton</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -40,7 +40,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>27</height>
|
||||
<height>19</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="filemenu">
|
||||
@ -52,6 +52,8 @@
|
||||
<property name="title">
|
||||
<string>Генерация показателей</string>
|
||||
</property>
|
||||
<addaction name="generateYaction"/>
|
||||
<addaction name="generateXaction"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="analyzemenu">
|
||||
<property name="title">
|
||||
@ -81,6 +83,16 @@
|
||||
<string>О программе</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="generateYaction">
|
||||
<property name="text">
|
||||
<string>Генерация отклика</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="generateXaction">
|
||||
<property name="text">
|
||||
<string>Генерация фактора</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
88
statapp/ui/ui_generate_window.py
generated
Normal file
88
statapp/ui/ui_generate_window.py
generated
Normal file
@ -0,0 +1,88 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
################################################################################
|
||||
## Form generated from reading UI file 'generate_window.ui'
|
||||
##
|
||||
## Created by: Qt User Interface Compiler version 6.5.2
|
||||
##
|
||||
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||
################################################################################
|
||||
|
||||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||
QMetaObject, QObject, QPoint, QRect,
|
||||
QSize, QTime, QUrl, Qt)
|
||||
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||
QFont, QFontDatabase, QGradient, QIcon,
|
||||
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||
from PySide6.QtWidgets import (QApplication, QDialog, QDoubleSpinBox, QGridLayout,
|
||||
QLabel, QPushButton, QSizePolicy, QSpinBox,
|
||||
QWidget)
|
||||
|
||||
class Ui_GenerateWindow(object):
|
||||
def setupUi(self, GenerateWindow):
|
||||
if not GenerateWindow.objectName():
|
||||
GenerateWindow.setObjectName(u"GenerateWindow")
|
||||
GenerateWindow.resize(503, 381)
|
||||
font = QFont()
|
||||
font.setPointSize(12)
|
||||
GenerateWindow.setFont(font)
|
||||
self.gridLayout_2 = QGridLayout(GenerateWindow)
|
||||
self.gridLayout_2.setObjectName(u"gridLayout_2")
|
||||
self.gridLayout = QGridLayout()
|
||||
self.gridLayout.setObjectName(u"gridLayout")
|
||||
self.generatePushButton = QPushButton(GenerateWindow)
|
||||
self.generatePushButton.setObjectName(u"generatePushButton")
|
||||
|
||||
self.gridLayout.addWidget(self.generatePushButton, 3, 0, 1, 2)
|
||||
|
||||
self.label_2 = QLabel(GenerateWindow)
|
||||
self.label_2.setObjectName(u"label_2")
|
||||
|
||||
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
|
||||
|
||||
self.label_3 = QLabel(GenerateWindow)
|
||||
self.label_3.setObjectName(u"label_3")
|
||||
|
||||
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
|
||||
|
||||
self.matSpinBox = QDoubleSpinBox(GenerateWindow)
|
||||
self.matSpinBox.setObjectName(u"matSpinBox")
|
||||
|
||||
self.gridLayout.addWidget(self.matSpinBox, 1, 1, 1, 1)
|
||||
|
||||
self.label = QLabel(GenerateWindow)
|
||||
self.label.setObjectName(u"label")
|
||||
|
||||
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
|
||||
|
||||
self.countSpinBox = QSpinBox(GenerateWindow)
|
||||
self.countSpinBox.setObjectName(u"countSpinBox")
|
||||
self.countSpinBox.setMinimum(1)
|
||||
|
||||
self.gridLayout.addWidget(self.countSpinBox, 0, 1, 1, 1)
|
||||
|
||||
self.deviationSpinBox = QDoubleSpinBox(GenerateWindow)
|
||||
self.deviationSpinBox.setObjectName(u"deviationSpinBox")
|
||||
|
||||
self.gridLayout.addWidget(self.deviationSpinBox, 2, 1, 1, 1)
|
||||
|
||||
|
||||
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
|
||||
|
||||
QWidget.setTabOrder(self.countSpinBox, self.matSpinBox)
|
||||
QWidget.setTabOrder(self.matSpinBox, self.deviationSpinBox)
|
||||
QWidget.setTabOrder(self.deviationSpinBox, self.generatePushButton)
|
||||
|
||||
self.retranslateUi(GenerateWindow)
|
||||
|
||||
QMetaObject.connectSlotsByName(GenerateWindow)
|
||||
# setupUi
|
||||
|
||||
def retranslateUi(self, GenerateWindow):
|
||||
GenerateWindow.setWindowTitle(QCoreApplication.translate("GenerateWindow", u"Dialog", None))
|
||||
self.generatePushButton.setText(QCoreApplication.translate("GenerateWindow", u"\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c", None))
|
||||
self.label_2.setText(QCoreApplication.translate("GenerateWindow", u"\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435", None))
|
||||
self.label_3.setText(QCoreApplication.translate("GenerateWindow", u"\u0421\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435", None))
|
||||
self.label.setText(QCoreApplication.translate("GenerateWindow", u"\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439", None))
|
||||
# retranslateUi
|
10
statapp/ui/ui_main_window.py
generated
10
statapp/ui/ui_main_window.py
generated
@ -27,6 +27,10 @@ class Ui_MainWindow(object):
|
||||
MainWindow.resize(800, 600)
|
||||
self.aboutmenuaction = QAction(MainWindow)
|
||||
self.aboutmenuaction.setObjectName(u"aboutmenuaction")
|
||||
self.generateYaction = QAction(MainWindow)
|
||||
self.generateYaction.setObjectName(u"generateYaction")
|
||||
self.generateXaction = QAction(MainWindow)
|
||||
self.generateXaction.setObjectName(u"generateXaction")
|
||||
self.centralwidget = QWidget(MainWindow)
|
||||
self.centralwidget.setObjectName(u"centralwidget")
|
||||
self.gridLayout = QGridLayout(self.centralwidget)
|
||||
@ -46,7 +50,7 @@ class Ui_MainWindow(object):
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QMenuBar(MainWindow)
|
||||
self.menubar.setObjectName(u"menubar")
|
||||
self.menubar.setGeometry(QRect(0, 0, 800, 27))
|
||||
self.menubar.setGeometry(QRect(0, 0, 800, 19))
|
||||
self.filemenu = QMenu(self.menubar)
|
||||
self.filemenu.setObjectName(u"filemenu")
|
||||
self.generatemenu = QMenu(self.menubar)
|
||||
@ -67,6 +71,8 @@ class Ui_MainWindow(object):
|
||||
self.menubar.addAction(self.analyzemenu.menuAction())
|
||||
self.menubar.addAction(self.modelmenu.menuAction())
|
||||
self.menubar.addAction(self.helpmenu.menuAction())
|
||||
self.generatemenu.addAction(self.generateYaction)
|
||||
self.generatemenu.addAction(self.generateXaction)
|
||||
self.helpmenu.addAction(self.aboutmenuaction)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
@ -77,6 +83,8 @@ class Ui_MainWindow(object):
|
||||
def retranslateUi(self, MainWindow):
|
||||
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", None))
|
||||
self.aboutmenuaction.setText(QCoreApplication.translate("MainWindow", u"\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435", None))
|
||||
self.generateYaction.setText(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430", None))
|
||||
self.generateXaction.setText(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u0430", None))
|
||||
self.label.setText(QCoreApplication.translate("MainWindow", u"\u0421\u0422\u0410\u0422\u0418\u0421\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u0414\u0410\u041d\u041d\u042b\u0415", None))
|
||||
self.filemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0424\u0430\u0439\u043b", None))
|
||||
self.generatemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439", None))
|
||||
|
Loading…
Reference in New Issue
Block a user