from PySide6.QtCore import Qt, QSize from PySide6.QtGui import QFont from PySide6.QtWidgets import ( QDialog, QWidget, QLabel, QVBoxLayout, QHBoxLayout, QPushButton, QButtonGroup, QSpacerItem, QSizePolicy, ) class LanguageDialog(QDialog): def __init__(self): super().__init__() self.setObjectName("LanguageDialog") self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog) self.setWindowModality(Qt.ApplicationModal) self.setMinimumSize(QSize(1024, 600)) root = QVBoxLayout(self) root.setContentsMargins(24, 24, 24, 24) root.setSpacing(16) root.addItem(QSpacerItem(10, 10, QSizePolicy.Minimum, QSizePolicy.Expanding)) card = QWidget() card.setObjectName("LanguageCard") card_layout = QVBoxLayout(card) card_layout.setContentsMargins(18, 18, 18, 18) card_layout.setSpacing(14) title = QLabel("Сначала выберите язык") title.setObjectName("LanguageTitle") title.setFont(QFont("", 20, 700)) title.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) options_row = QHBoxLayout() options_row.setContentsMargins(0, 0, 0, 0) options_row.setSpacing(12) self._group = QButtonGroup(self) self._group.setExclusive(True) self._btn_ru = QPushButton("Русский") self._btn_ru.setObjectName("LanguageOption") self._btn_ru.setCheckable(True) self._btn_ru.setChecked(True) self._btn_ru.setMinimumHeight(48) self._btn_ru.setFont(QFont("", 14, 600)) self._group.addButton(self._btn_ru) options_row.addWidget(self._btn_ru, 1) options_row.addStretch(1) confirm = QPushButton("Продолжить") confirm.setObjectName("LanguageConfirm") confirm.setMinimumHeight(52) confirm.setFont(QFont("", 15, 700)) confirm.clicked.connect(self.accept) card_layout.addWidget(title) card_layout.addLayout(options_row) card_layout.addWidget(confirm) root.addWidget(card) root.addItem(QSpacerItem(10, 10, QSizePolicy.Minimum, QSizePolicy.Expanding)) def reject(self): # Ignore reject to force a language choice. return def selected_language(self) -> str: return "ru"