/
dembel52
/
Proekt
Обзор
Документация
Войти
/
dembel52
/
Proekt
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.py
101 строка
4 KB
dembel52
ggg
23 июл 2026, 13:08
23 июл 2026, 13:08
8c156f4
Код
Авторство
О чём код?
# FBD Editor - Основной модуль приложения import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QSplitter from PyQt6.QtCore import Qt from src.ui.canvas import FBDCanvas from src.ui.widgets import BlockPalette, PropertiesEditor, Toolbar from src.models.fbd_elements import BlockType class FBDEditorMainWindow(QMainWindow): """Главное окно редактора FBD""" def __init__(self): super().__init__() self.setWindowTitle("FBD Editor - Редактор функциональных блоков") self.setMinimumSize(1200, 800) # Инициализация UI self._init_ui() # Инициализация состояния self._init_state() def _init_ui(self): """Инициализация пользовательского интерфейса""" # Создание центрального виджета central_widget = QWidget() self.setCentralWidget(central_widget) # Создание главного layout main_layout = QVBoxLayout() main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(0) # Добавление панели инструментов self.toolbar = Toolbar() main_layout.addWidget(self.toolbar) # Создание splitter для разделения панелей splitter = QSplitter(Qt.Orientation.Horizontal) # Левая панель - палитра блоков self.block_palette = BlockPalette() self.block_palette.setMinimumWidth(200) # Центральная панель - canvas self.canvas = FBDCanvas() # Правая панель - редактор свойств self.properties_editor = PropertiesEditor() self.properties_editor.setMinimumWidth(200) # Добавление панелей в splitter splitter.addWidget(self.block_palette) splitter.addWidget(self.canvas) splitter.addWidget(self.properties_editor) # Установка соотношений размеров splitter.setSizes([150, 700, 200]) # Добавление splitter в главный layout main_layout.addWidget(splitter) # Установка layout central_widget.setLayout(main_layout) def _init_state(self): """Инициализация состояния приложения""" # Подключение сигналов self.block_palette.block_selected.connect(self._on_block_selected) def _on_block_selected(self, block_type): """Обработчик выбора блока из палитры""" # Добавление блока на canvas self.canvas.add_block(block_type) def closeEvent(self, event): """Обработчик закрытия окна""" # Здесь можно добавить проверку на несохраненные изменения event.accept() def main(): """Точка входа в приложение""" # Создание приложения app = QApplication(sys.argv) # Настройка стиля приложения app.setStyle("Fusion") # Создание и показ главного окна window = FBDEditorMainWindow() window.show() # Запуск цикла событий sys.exit(app.exec()) if __name__ == "__main__": main()