Не работает программа на PyQt6

Рейтинг: 0Ответов: 0Опубликовано: 13.08.2023

Я пишу приложение на PyQt6 и мне нужно разделить код на несколько файлов. Первый файл создает главное окно, в котором есть кнопка по нажатии, которой очищаются все виджеты и должны добавляться новые, уже из другого файла.

Я пытался импортировать в главный файл, делал разные функции, делал lambda функции, наследовал классы, но ничего не помогло. Я использую QVBoxLayout, если что

Вот код:

from PyQt6 import QtWidgets, QtCore
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget

# from quiz_application import QuizApplication
# from enter_or_register import EnterOrRegister

# from login_window import LoginWindow


import sys


class EnterOrRegister(QWidget):
    def __init__(self):
        super().__init__()

        self.select_enter_register = QtWidgets.QLabel(self)
        self.select_enter_register.setObjectName("select_enter_register")
        self.select_enter_register.setText("Enter or register")
        self.select_enter_register.setWordWrap(False)
        self.select_enter_register.setAlignment(
            QtCore.Qt.AlignmentFlag.AlignCenter
            )
        self.select_enter_register.adjustSize()

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(self.select_enter_register)


class QuizApplication(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Quiz Application")
        self.setGeometry(300, 50, 645, 500)

        self.welcome_label = QtWidgets.QLabel(self)
        self.welcome_label.setObjectName("welcome_label")
        self.welcome_label.setText("Welcome to Marathon Battle!")
        self.welcome_label.setWordWrap(False)
        self.welcome_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)

        self.start_button = QtWidgets.QPushButton(self)
        self.start_button.setObjectName("start_button")
        self.start_button.setText("Start Quiz")
        self.start_button.adjustSize()

        self.quiz_QVBlayout = QtWidgets.QVBoxLayout(self)
        self.quiz_QVBlayout.addWidget(
            self.welcome_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignTop
        )
        self.quiz_QVBlayout.addWidget(
            self.start_button,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom
        )


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Quiz Application")
        self.setGeometry(300, 50, 645, 500)

        self.centralwidget = QtWidgets.QWidget()
        self.centralwidget.setObjectName("centralwidget")
        self.setCentralWidget(self.centralwidget)

        self.quizApplication = QuizApplication()
        self.enterOrRegister = EnterOrRegister()

        self.stack = QtWidgets.QStackedWidget(self)
        self.ix_stack_1 = self.stack.addWidget(self.quizApplication)
        ix_stack_2 = self.stack.addWidget(self.enterOrRegister)

        self.QVBlayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.QVBlayout.addWidget(self.stack)

        self.quizApplication.start_button.clicked.connect(
            lambda: self.stack.setCurrentIndex(ix_stack_2)
        )


StyleSheet = """
#centralwidget {
    border-image: url(images/battle_images/battle-of-marathon-war.jpg)"\
    "0 0 0 0 stretch stretch;
}
#welcome_label {
    font-size: 23px;
}
#start_button {
    font-size: 20px;
    color: #ADFF2F;
    background-color: #008000;
}
#select_enter_register {
    font-size: 21px;
    color: #00FA9A;
    background-color: rgba(220, 0, 0, 70);
    border: 2px solid #f9009B;
    border-radius: 22px;
    min-width:  296px;
    min-height: 196px;
    max-width:  400px;
    max-height: 300px;
}
#instructional_label {
    font-size: 20px;
    color: rgba(135, 155, 200, 226);
}
"""


def application_setup():
    app = QApplication(sys.argv)
    app.setStyleSheet(StyleSheet)
    window = QuizApplication()
    window.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    application_setup()

Ответы

Ответов пока нет.