Добавлена функция передачи данных калькулятора в расчёт полнофакторного анализа

This commit is contained in:
2026-05-07 15:02:28 +05:00
parent e3fbaceb24
commit e6e86e50a3
17 changed files with 1540 additions and 553 deletions
+25
View File
@@ -4,11 +4,13 @@ from PyQt5.QtGui import QColor
import json
from ..models.medium_model import MediumModel
from ..models.reagent import Reagent
from ..views.experiment_view import ExperimentDesignWindow
class MediumController:
def __init__(self, view):
self.model = MediumModel()
self.view = view
self.doe_window = None
self._connect_signals()
self._setup_initial_data()
@@ -18,6 +20,7 @@ class MediumController:
self.view.calculate_btn.clicked.connect(self._perform_calculation)
self.view.save_btn.clicked.connect(self.save_composition)
self.view.load_btn.clicked.connect(self.load_composition)
self.view.to_doe_btn.clicked.connect(self.send_to_doe)
self.view.solvent_input.textChanged.connect(self.view.update_solvent_name)
def _setup_initial_data(self):
@@ -66,6 +69,28 @@ class MediumController:
except ValueError as e:
raise ValueError(f"Ошибка в строке {row + 1}: {str(e)}")
def send_to_doe(self):
"""Передаёт данные о реагентах в окно планирования эксперимента"""
reagents = self.view.get_reagents_data()
if len(reagents) == 0:
self.view.show_error("Нет реагентов для передачи в планировщик эксперимента!")
return
# Создаём или показываем существующее окно DoE
if self.doe_window is None:
self.doe_window = ExperimentDesignWindow()
# Передаём данные в окно DoE
self.doe_window.load_factors_from_reagents(reagents)
self.doe_window.show()
self.doe_window.raise_()
self.doe_window.activateWindow()
self.view.show_info(f"Передано {len(reagents)} реагентов в планировщик эксперимента\n"
f"Каждый реагент добавлен как фактор.\n"
f"Его концентрация (%) установлена как нулевой уровень.")
def save_composition(self):
filename, _ = QFileDialog.getSaveFileName(self.view, "Сохранить состав среды", "", "JSON Files (*.json);;All Files (*)")
if filename: