Расширен функционал, начата разработка функционала по оптимизации
This commit is contained in:
+145
@@ -0,0 +1,145 @@
|
||||
from PyQt5.QtWidgets import (QMainWindow, QVBoxLayout, QHBoxLayout,
|
||||
QPushButton, QLabel, QWidget, QFrame)
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtGui import QFont, QIcon
|
||||
from controller import Controller
|
||||
from experiment_design import ExperimentDesignWindow
|
||||
|
||||
|
||||
class DigitalBiochemistAssistant(QMainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setWindowTitle("Цифровой помощник биохимика - Главное меню")
|
||||
self.setGeometry(300, 200, 700, 500)
|
||||
self.setStyleSheet("""
|
||||
QMainWindow {
|
||||
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1,
|
||||
stop:0 #e8f4f8, stop:1 #f0f0f0);
|
||||
}
|
||||
QPushButton {
|
||||
background-color: #2196F3;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 15px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
border-radius: 8px;
|
||||
font-family: 'Segoe UI', Arial;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #1976D2;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #0D47A1;
|
||||
}
|
||||
QLabel {
|
||||
color: #333;
|
||||
font-size: 14px;
|
||||
font-family: 'Segoe UI', Arial;
|
||||
}
|
||||
""")
|
||||
self._init_ui()
|
||||
|
||||
def _init_ui(self):
|
||||
central_widget = QWidget()
|
||||
self.setCentralWidget(central_widget)
|
||||
layout = QVBoxLayout(central_widget)
|
||||
layout.setSpacing(20)
|
||||
layout.setContentsMargins(50, 50, 50, 50)
|
||||
|
||||
# Заголовок
|
||||
title_label = QLabel("🧬 Цифровой помощник биохимика 🧪")
|
||||
title_font = QFont()
|
||||
title_font.setPointSize(20)
|
||||
title_font.setBold(True)
|
||||
title_label.setFont(title_font)
|
||||
title_label.setAlignment(Qt.AlignCenter)
|
||||
title_label.setStyleSheet("color: #1565C0;")
|
||||
layout.addWidget(title_label)
|
||||
|
||||
# Подзаголовок
|
||||
subtitle_label = QLabel("Биотехнологические инструменты для лаборатории")
|
||||
subtitle_font = QFont()
|
||||
subtitle_font.setPointSize(12)
|
||||
subtitle_label.setFont(subtitle_font)
|
||||
subtitle_label.setAlignment(Qt.AlignCenter)
|
||||
subtitle_label.setStyleSheet("color: #666;")
|
||||
layout.addWidget(subtitle_label)
|
||||
|
||||
layout.addSpacing(20)
|
||||
|
||||
# Кнопка 1: Калькулятор питательных сред
|
||||
btn_medium = QPushButton("🥼 Калькулятор питательных сред")
|
||||
btn_medium.setMinimumHeight(80)
|
||||
btn_medium.clicked.connect(self.open_medium_calculator)
|
||||
layout.addWidget(btn_medium)
|
||||
|
||||
# Описание кнопки 1
|
||||
desc1_label = QLabel("Расчёт состава питательной среды с учётом процентного содержания,\n"
|
||||
"разбавления реагентов и автоматическим расчётом растворителя")
|
||||
desc1_label.setAlignment(Qt.AlignCenter)
|
||||
desc1_label.setWordWrap(True)
|
||||
desc1_label.setStyleSheet("color: #555; font-size: 11px;")
|
||||
layout.addWidget(desc1_label)
|
||||
|
||||
layout.addSpacing(15)
|
||||
|
||||
# Кнопка 2: Планирование эксперимента
|
||||
btn_experiment = QPushButton("📊 Планирование эксперимента (DoE)")
|
||||
btn_experiment.setMinimumHeight(80)
|
||||
btn_experiment.clicked.connect(self.open_experiment_designer)
|
||||
layout.addWidget(btn_experiment)
|
||||
|
||||
# Описание кнопки 2
|
||||
desc2_label = QLabel("Дизайн эксперимента, оптимизация процессов,\n"
|
||||
"многомерный анализ и визуализация")
|
||||
desc2_label.setAlignment(Qt.AlignCenter)
|
||||
desc2_label.setWordWrap(True)
|
||||
desc2_label.setStyleSheet("color: #555; font-size: 11px;")
|
||||
layout.addWidget(desc2_label)
|
||||
|
||||
layout.addSpacing(15)
|
||||
|
||||
# Линия-разделитель
|
||||
line = QFrame()
|
||||
line.setFrameShape(QFrame.HLine)
|
||||
line.setFrameShadow(QFrame.Sunken)
|
||||
layout.addWidget(line)
|
||||
|
||||
# Нижняя панель
|
||||
bottom_layout = QHBoxLayout()
|
||||
|
||||
# Информация о версии
|
||||
version_label = QLabel("Версия 2.0 | © 2024 Цифровой помощник биохимика")
|
||||
version_label.setStyleSheet("color: #999; font-size: 10px;")
|
||||
bottom_layout.addWidget(version_label)
|
||||
|
||||
bottom_layout.addStretch()
|
||||
|
||||
# Кнопка выхода
|
||||
btn_exit = QPushButton("Выход")
|
||||
btn_exit.setMaximumWidth(150)
|
||||
btn_exit.setStyleSheet("""
|
||||
QPushButton {
|
||||
background-color: #f44336;
|
||||
padding: 8px;
|
||||
font-size: 14px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #da190b;
|
||||
}
|
||||
""")
|
||||
btn_exit.clicked.connect(self.close)
|
||||
bottom_layout.addWidget(btn_exit)
|
||||
|
||||
layout.addLayout(bottom_layout)
|
||||
|
||||
def open_medium_calculator(self):
|
||||
"""Открывает калькулятор питательной среды"""
|
||||
self.medium_calculator = Controller()
|
||||
self.medium_calculator.view.show()
|
||||
|
||||
def open_experiment_designer(self):
|
||||
"""Открывает окно планирования эксперимента"""
|
||||
self.experiment_window = ExperimentDesignWindow()
|
||||
self.experiment_window.show()
|
||||
Reference in New Issue
Block a user