import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout,
QLabel, QLineEdit, QPushButton, QTabWidget,
QSplitter, QRadioButton, QCheckBox, QGroupBox,
QStackedWidget, QTextEdit)
from PyQt6.QtCore import Qt
class SetupWizard(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Настройка проекта")
self.resize(600, 450)
# Главный сплиттер: контент сверху, кнопки снизу
self.splitter = QSplitter(Qt.Orientation.Vertical)
# Стек страниц
self.stack = QStackedWidget()
self.stack.addWidget(self.page1())
self.stack.addWidget(self.page2())
# Нижняя панель с кнопками
nav = QWidget()
nav_layout = QHBoxLayout(nav)
self.btn_back = QPushButton("← Назад")
self.btn_next = QPushButton("Вперед →")
self.btn_back.clicked.connect(lambda: self.stack.setCurrentIndex(0))
self.btn_next.clicked.connect(lambda: self.stack.setCurrentIndex(1))
nav_layout.addWidget(self.btn_back)
nav_layout.addStretch()
nav_layout.addWidget(self.btn_next)
self.splitter.addWidget(self.stack)
self.splitter.addWidget(nav)
self.splitter.setSizes([380, 50])
layout = QVBoxLayout(self)
layout.addWidget(self.splitter)
def page1(self):
"""Шаг 1: Основные настройки"""
page = QWidget()
layout = QVBoxLayout(page)
layout.addWidget(QLabel("<b>Шаг 1: Основные настройки</b>"))
# Внутренний сплиттер: инфо-блок и поле ввода
inner_split = QSplitter(Qt.Orientation.Vertical)
info = QTextEdit()
info.setReadOnly(True)
info.setText("Информация о проекте")
inner_split.addWidget(info)
inner_split.addWidget(QLineEdit("Веб-сайт компании"))
inner_split.setSizes([200, 40])
layout.addWidget(inner_split)
layout.addWidget(QPushButton("Создать проект"))
return page
def page2(self):
"""Шаг 2: Методология и отчетность (QTabWidget)"""
page = QWidget()
layout = QVBoxLayout(page)
layout.addWidget(QLabel("<b>Шаг 2: Методология проекта</b>"))
tabs = QTabWidget()
# Вкладка "Методология"
tab1 = QWidget()
t1 = QVBoxLayout(tab1)
box1 = QGroupBox("Выбор методологии")
b1 = QVBoxLayout(box1)
for name in ("Agile", "Waterfall", "Kanban"):
b1.addWidget(QRadioButton(name))
b1.addStretch()
t1.addWidget(box1)
# Вкладка "Отчетность"
tab2 = QWidget()
t2 = QVBoxLayout(tab2)
box2 = QGroupBox("Настройки отчетов")
b2 = QVBoxLayout(box2)
b2.addWidget(QCheckBox("Еженедельные отчеты"))
b2.addWidget(QCheckBox("Ежедневные стендапы"))
b2.addStretch()
t2.addWidget(box2)
tabs.addTab(tab1, "Методология")
tabs.addTab(tab2, "Отчетность")
layout.addWidget(tabs)
return page
if __name__ == '__main__':
app = QApplication(sys.argv)
SetupWizard().show()
sys.exit(app.exec())