Загрузка данных


import sys
from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
                             QHBoxLayout, QLabel, QPushButton, QStackedWidget,
                             QSplitter, QTabWidget, QLineEdit, QTextEdit,
                             QRadioButton, QCheckBox, QGroupBox)
from PyQt6.QtGui import QFont


class Wizard(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Настройка проекта")
        self.resize(600, 500)

        # Центральный виджет
        central = QWidget()
        self.setCentralWidget(central)
        layout = QVBoxLayout(central)

        # Стек страниц
        self.stack = QStackedWidget()
        layout.addWidget(self.stack)

        # ---------- Шаг 1: QSplitter ----------
        page1 = QWidget()
        p1_layout = QVBoxLayout(page1)

        title1 = QLabel("Шаг 1: Основные настройки")
        title1.setFont(QFont("Arial", 12, QFont.Weight.Bold))
        p1_layout.addWidget(title1)

        splitter = QSplitter()
        splitter.addWidget(QLabel("Информация о проекте"))
        splitter.addWidget(QLineEdit("Веб-сайт компании"))
        splitter.setSizes([300, 300])
        p1_layout.addWidget(splitter)

        p1_layout.addWidget(QPushButton("Создать проект"))
        p1_layout.addStretch()

        # ---------- Шаг 2: QTabWidget ----------
        page2 = QWidget()
        p2_layout = QVBoxLayout(page2)

        title2 = QLabel("Шаг 2: Методология проекта")
        title2.setFont(QFont("Arial", 12, QFont.Weight.Bold))
        p2_layout.addWidget(title2)

        tabs2 = QTabWidget()

        # Вкладка 1: Методология
        tab_method = QWidget()
        tm_layout = QVBoxLayout(tab_method)
        box1 = QGroupBox("Выбор методологии")
        b1_layout = QVBoxLayout(box1)
        b1_layout.addWidget(QRadioButton("Agile"))
        b1_layout.addWidget(QRadioButton("Waterfall"))
        b1_layout.addWidget(QRadioButton("Kanban"))
        tm_layout.addWidget(box1)
        tabs2.addTab(tab_method, "Методология")

        # Вкладка 2: Отчётность
        tab_report = QWidget()
        tr_layout = QVBoxLayout(tab_report)
        box2 = QGroupBox("Настройки отчетов")
        b2_layout = QVBoxLayout(box2)
        b2_layout.addWidget(QCheckBox("Еженедельные отчеты"))
        b2_layout.addWidget(QCheckBox("Ежедневные стендапы"))
        tr_layout.addWidget(box2)
        tabs2.addTab(tab_report, "Отчетность")

        p2_layout.addWidget(tabs2)
        p2_layout.addStretch()

        # ---------- Шаг 3: QTabWidget (один таб) ----------
        page3 = QWidget()
        p3_layout = QVBoxLayout(page3)

        title3 = QLabel("Шаг 3: Описание проекта")
        title3.setFont(QFont("Arial", 12, QFont.Weight.Bold))
        p3_layout.addWidget(title3)

        tabs3 = QTabWidget()
        tabs3.setTabBarAutoHide(True)  # Скрываем панель вкладок

        tab_desc = QWidget()
        td_layout = QVBoxLayout(tab_desc)
        td_layout.addWidget(QTextEdit("Корпоративный сайт с интернет-магазином."))
        tabs3.addTab(tab_desc, "Описание")

        p3_layout.addWidget(tabs3)
        p3_layout.addStretch()

        # Добавляем страницы в стек
        self.stack.addWidget(page1)
        self.stack.addWidget(page2)
        self.stack.addWidget(page3)

        # ---------- Кнопки навигации ----------
        nav = QHBoxLayout()
        self.btn_back = QPushButton("← Назад")
        self.btn_next = QPushButton("Вперед →")
        self.btn_finish = QPushButton("Завершить")
        self.btn_back.setEnabled(False)
        self.btn_finish.setVisible(False)

        nav.addWidget(self.btn_back)
        nav.addStretch()
        nav.addWidget(self.btn_next)
        nav.addWidget(self.btn_finish)
        layout.addLayout(nav)

        # Сигналы
        self.btn_back.clicked.connect(self.go_back)
        self.btn_next.clicked.connect(self.go_next)
        self.btn_finish.clicked.connect(self.close)

    def go_back(self):
        i = self.stack.currentIndex()
        if i > 0:
            self.stack.setCurrentIndex(i - 1)
            self.update_buttons()

    def go_next(self):
        i = self.stack.currentIndex()
        if i < self.stack.count() - 1:
            self.stack.setCurrentIndex(i + 1)
            self.update_buttons()

    def update_buttons(self):
        i = self.stack.currentIndex()
        self.btn_back.setEnabled(i > 0)
        # На последнем шаге вместо "Вперед" показываем "Завершить"
        last = (i == self.stack.count() - 1)
        self.btn_next.setVisible(not last)
        self.btn_finish.setVisible(last)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Wizard()
    window.show()
    sys.exit(app.exec())