Реализация функционала полнофакторного эксперимента

This commit is contained in:
2026-05-06 23:10:55 +05:00
parent 361b934e8a
commit 15193d2403
5 changed files with 751 additions and 212 deletions
+12 -16
View File
@@ -1,7 +1,8 @@
from PyQt5.QtWidgets import QMessageBox, QFileDialog, QTableWidgetItem, QComboBox, QLineEdit
from PyQt5.QtWidgets import QMessageBox, QFileDialog, QTableWidgetItem, QComboBox, QLineEdit, QDoubleSpinBox
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor
from model import Model
from view import MainWindow as MediumCalculatorView
from view import MediumCalculatorWindow
import json
from reagent import Reagent
@@ -9,10 +10,9 @@ from reagent import Reagent
class Controller:
def __init__(self):
self.model = Model()
self.view = MediumCalculatorView()
self.view = MediumCalculatorWindow()
self._connect_signals()
# Убираем автоматический показ окна - теперь он вызывается из главного меню
# self.view.show()
def _connect_signals(self):
"""Подключает обработчики событий интерфейса"""
@@ -118,26 +118,22 @@ class Controller:
self.view.table.setItem(row, 0, QTableWidgetItem(reagent.name))
self.view.table.setItem(row, 1, QTableWidgetItem(f"{reagent.percentage:.2f}"))
# Единица - QComboBox
unit_combo = QComboBox()
unit_combo.addItems(["нг", "мкг", "мг", "г", "кг", "нл", "мкл", "мл", "л"])
unit_combo.setCurrentText(reagent.unit)
self.view.table.setCellWidget(row, 2, unit_combo)
self.view.table.setItem(row, 3, QTableWidgetItem(f"{reagent.conversion_factor:.2f}"))
# Создаём поле для разбавления (QLineEdit для ручного ввода)
dilution_edit = QLineEdit()
dilution_edit.setText(f"{getattr(reagent, 'dilution_factor', 1.0):.3f}")
dilution_edit.setAlignment(Qt.AlignRight)
dilution_edit.setToolTip("Во сколько раз разбавить (1 = без разбавления)")
self.view.table.setCellWidget(row, 4, dilution_edit)
# Разбавление - обычная ячейка
self.view.table.setItem(row, 4, QTableWidgetItem(f"{getattr(reagent, 'dilution_factor', 1.0):.3f}"))
self.view.table.setItem(row, 5, QTableWidgetItem(""))
# Очищаем результаты
self.view.clear_results()
def save_composition(self):
"""Сохраняет состав среды в JSON-файл"""
filename, _ = QFileDialog.getSaveFileName(