Почему не получается изменить размер окна после нажатия кнопки в PyQt6

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

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

main.py

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

from quiz_application import QuizApplication
from enter_or_register import EnterOrRegister
from login_window import LoginWindow
from logo import LogosForEnterOrRegister

# from login_window import LoginWindow
import sys


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

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

        self.quizApplication = QuizApplication()
        self.enterOrRegister = EnterOrRegister()
        self.loginwindow = LoginWindow()
        self.logosForEnterOrRegister = LogosForEnterOrRegister()

        self.stack = QtWidgets.QStackedWidget(self)
        self.ix_stack_1 = self.stack.addWidget(self.quizApplication)
        self.ix_stack_2 = self.stack.addWidget(self.enterOrRegister)
        self.ix_stack_3 = self.stack.addWidget(self.loginwindow)
        self.ix_stack_4 = self.stack.addWidget(self.logosForEnterOrRegister)

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

        # buttons clicked connectors

        self.quizApplication.start_button.clicked.connect(
            self.on_start_button_clicked)
        self.enterOrRegister.register_button.clicked.connect(
            self.on_register_button_clicked
        )
        self.enterOrRegister.back_button.clicked.connect(
            self.on_back_button_clicked)

    # functions
    def on_start_button_clicked(self):
        self.stack.setCurrentIndex(1)
        self.setStyleSheet("""border-image: unset;""")

    def on_register_button_clicked(self):
        self.stack.setCurrentIndex(2)
        self.setStyleSheet("""border-image: unset;""")

    def on_enter_button_clicked(self):
        pass
        # self.stack.setCurrentIndex(3)
        # self.setStyleSheet("""border-image: unset;""")

    def on_back_button_clicked(self):
        self.stack.setCurrentIndex(0)
        self.setStyleSheet(
            """
#centralwidget {
    border-image: url(images/battle_images/marathon_battle-photo_2.jpg)"\
    "0 0 0 0 stretch stretch;
}"""
        )


StyleSheet = """
#centralwidget {
    border-image: url(images/battle_images/marathon_battle-photo_2.jpg)"\
    "0 0 0 0 stretch stretch;
}
#welcome_label {
    font-size: 23px;
}
#start_button {
    font-size: 20px;
    color: #ADFF2F;
    background-color: #008000;
}
#back_button {
    font-size: 20px;
    background-color: #008000;
}
#select_enter_register {
    font-size: 21px;
    color: #00FA9A;
}
#instructional_label {
    font-size: 20px;
    color: rgba(135, 155, 200, 226);
}
#register_label {
    font-size: 20px;
    color: rgba(35, 255, 121, 226);
}
#enter_button {
    font-size: 20px;
    background-color: #008000;
    color: rgba(255, 255, 0, 226);
}
#register {
    font-size: 20px;
    background-color: #008000;
    color: rgba(255, 255, 0, 226);
}
"""


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


if __name__ == "__main__":
    application_setup()

enter_or_register.py

from PyQt6 import QtCore, QtWidgets
from PyQt6.QtWidgets import QWidget
# from PyQt6.QtGui import QPixmap

from logo import LogosForEnterOrRegister


class EnterOrRegister(LogosForEnterOrRegister, 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
            | QtCore.Qt.AlignmentFlag.AlignVCenter
            )
        self.select_enter_register.adjustSize()

        self.enter_button = QtWidgets.QPushButton(self)
        self.enter_button.setObjectName("enter_button")
        self.enter_button.setText("Enter")
        self.enter_button.setFixedSize(300, 100)

        self.register_label = QtWidgets.QLabel(self)
        self.register_label.setObjectName("register_label")
        self.register_label.setText("Not logged in yet?")
        self.register_label.setWordWrap(False)
        self.register_label.setAlignment(
            QtCore.Qt.AlignmentFlag.AlignCenter
            )
        self.register_label.adjustSize()

        self.register_button = QtWidgets.QPushButton(self)
        self.register_button.setObjectName("register")
        self.register_button.setText("Register")
        self.register_button.adjustSize()

        self.back_button = QtWidgets.QPushButton(self)
        self.back_button.setObjectName("back_button")
        self.back_button.setText("<- Back")
        self.back_button.adjustSize()

# layouts

        self.QVB_layout = QtWidgets.QVBoxLayout(self)
        self.QVB_layout.addWidget(
            self.select_enter_register,
            alignment=QtCore.Qt.AlignmentFlag.AlignTop)
        self.QVB_layout.addWidget(
            self.enter_button,
            alignment=QtCore.Qt.AlignmentFlag.AlignCenter)
        self.QVB_layout.addWidget(
            self.register_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignCenter)
        self.QVB_layout.addWidget(
            self.register_button,
            alignment=QtCore.Qt.AlignmentFlag.AlignTop
        )

        self.QVB_layout.addLayout(
            self.QHB_logo_layout
        )

quiz_application.py

from PyQt6 import QtCore, QtWidgets
from PyQt6.QtWidgets import QWidget
# from PyQt6.QtGui import QPixmap


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
        )

login_window.py:

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


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

        self.setWindowTitle("Login Window")
        self.setGeometry(300, 300, 300, 308)
        self.setFixedSize(300, 308)

        self.instructional_label = QtWidgets.QLabel(self)
        self.instructional_label.setObjectName("instructional_label")
        self.instructional_label.setText("Enter your login and password")
        self.instructional_label.setWordWrap(False)
        # self.instructional_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)
        self.instructional_label.adjustSize()

        self.login_label = QtWidgets.QLabel(self)
        self.login_label.setObjectName("login_text")
        self.login_label.setText("Login")
        self.login_label.setWordWrap(False)
        # self.login_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.login_label.adjustSize()

        self.login_edit_text = QtWidgets.QLineEdit(self)
        self.login_edit_text.setObjectName("login_edit_text")
        # self.login_edit_text.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)

        self.password_edit_text = QtWidgets.QLineEdit(self)
        self.password_edit_text.setObjectName("password_edit_text")
        # self.password_edit_text.setAlignment(
        # QtCore.Qt.AlignmentFlag.AlignCenter)

        self.layout = QtWidgets.QVBoxLayout(self)
        self.layout.addWidget(
            self.instructional_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.layout.addWidget(
            self.login_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.layout.addWidget(
            self.login_edit_text,
            alignment=QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.layout.addWidget(
            self.password_edit_text,
            alignment=QtCore.Qt.AlignmentFlag.AlignVCenter)

logo.py:

from PyQt6 import QtWidgets, QtGui, QtCore
from PyQt6.QtWidgets import QWidget


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

        self.facebook_logo = QtGui.QPixmap("images/logos/facebook_logo.png")
        self.facebook_logo_label = QtWidgets.QLabel(self)
        self.facebook_logo_label.setPixmap(self.facebook_logo)
        self.facebook_logo_label.adjustSize()

        self.git_hub_logo = QtGui.QPixmap("images/logos/GitHub_logo.png")
        self.git_hub_logo_label = QtWidgets.QLabel(self)
        self.git_hub_logo_label.setPixmap(self.git_hub_logo)
        self.git_hub_logo_label.adjustSize()

        self.google_logo = QtGui.QPixmap("images/logos/google_logo.png")
        self.google_logo_label = QtWidgets.QLabel(self)
        self.google_logo_label.setPixmap(self.google_logo)
        self.google_logo_label.adjustSize()

        self.yandex_logo = QtGui.QPixmap("images/logos/yandex_logo.png")
        self.yandex_logo_label = QtWidgets.QLabel(self)
        self.yandex_logo_label.setPixmap(self.yandex_logo)
        self.yandex_logo_label.adjustSize()

        self.meta_logo = QtGui.QPixmap("images/logos/meta_logo.png")
        self.meta_logo_label = QtWidgets.QLabel(self)
        self.meta_logo_label.setPixmap(self.meta_logo)
        self.meta_logo_label.adjustSize()

        self.QHB_logo_layout = QtWidgets.QHBoxLayout()
        self.QHB_logo_layout.addWidget(
            self.facebook_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom
        )
        self.QHB_logo_layout.addWidget(
            self.git_hub_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom
        )
        self.QHB_logo_layout.addWidget(
            self.google_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom
        )
        self.QHB_logo_layout.addWidget(
            self.yandex_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom
        )
        self.QHB_logo_layout.addWidget(
            self.meta_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom
        )

Вот изображения приложения:

вот стартовое окно

после нажатия кнопки register

после нажатия кнопки start

Ответы

▲ 2Принят

Вам действительно надо научиться составлять минимально-воспроизводимые примеры.

На размер окна влияют многие факторы:

  • setFixedSize();
  • font-size: 23px;
  • self.welcome_label.setWordWrap(False);
  • размер изображений, которые вы используете;
  • и т.д.

У вас, я так понимаю, уменьшению размера окна невозможен из-за пяти размера пяти изображений, которые вы используете на второй страницы и которые у вас не могут быть уменьшены.

Я переписал для вас класс EnterOrRegister(), в котором реализовал возможность уменьшения размера изображений.

Обратите внимание, никакого множественного наследования, добавлены два метода resizeEvent() и updateLabel(), а также некоторые другие изменения.

main.py

'''
from PyQt6 import QtWidgets
from PyQt6.QtWidgets import QApplication, QMainWindow
'''
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *


#from logo import LogosForEnterOrRegister
class LogosForEnterOrRegister(QWidget):
    def __init__(self):
        super().__init__()
        
# я не знаю для чкго вам эта страница        
        self.facebook_logo_label = QtWidgets.QLabel(self)
        self.facebook_logo = QtGui.QPixmap("ball.png")
        self.facebook_logo_label.setPixmap(self.facebook_logo)

        self.git_hub_logo_label = QtWidgets.QLabel(self)
        self.git_hub_logo = QtGui.QPixmap("ball.png")
        self.git_hub_logo_label.setPixmap(self.git_hub_logo)

        self.google_logo_label = QtWidgets.QLabel(self)
        self.google_logo = QtGui.QPixmap("ball.png")
        self.google_logo_label.setPixmap(self.google_logo)

        self.yandex_logo = QtGui.QPixmap("ball.png")
        self.yandex_logo_label = QtWidgets.QLabel(self)
        self.yandex_logo_label.setPixmap(self.yandex_logo)

        self.meta_logo_label = QtWidgets.QLabel(self)
        self.meta_logo = QtGui.QPixmap("Ok.png")
        self.meta_logo_label.setPixmap(self.meta_logo)
###                                                  self
        self.QHB_logo_layout = QtWidgets.QHBoxLayout(self)
        self.QHB_logo_layout.addWidget(
            self.facebook_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom)
        self.QHB_logo_layout.addWidget(
            self.git_hub_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom)
        self.QHB_logo_layout.addWidget(
            self.google_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom)
        self.QHB_logo_layout.addWidget(
            self.yandex_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom)
        self.QHB_logo_layout.addWidget(
            self.meta_logo_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignBottom)
###        
        self.back_button = QtWidgets.QPushButton(self)         # +
        self.back_button.setObjectName("back_button")          # +
        self.back_button.setText("<- Back")                    # +
      
        
#from login_window import LoginWindow
class LoginWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Login Window")                    # +
#        self.setGeometry(300, 300, 300, 308)
# ???        self.setFixedSize(300, 308)

        self.instructional_label = QtWidgets.QLabel(self)
        self.instructional_label.setObjectName("instructional_label")
        self.instructional_label.setText("Enter your login and password")
        self.instructional_label.setWordWrap(False)
        self.instructional_label.setAlignment(
            QtCore.Qt.AlignmentFlag.AlignHCenter |
            QtCore.Qt.AlignmentFlag.AlignTop)

        self.login_edit_text = QtWidgets.QLineEdit(self)
        self.login_edit_text.setObjectName("login_edit_text")

        self.password_edit_text = QtWidgets.QLineEdit(self)
        self.password_edit_text.setObjectName("password_edit_text")
        
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
        formlayout = QFormLayout()                               # + QFormLayout()
        formlayout.addRow("Login", self.login_edit_text)
        formlayout.addRow("Password", self.password_edit_text)

        self.layout = QtWidgets.QGridLayout(self)                # + QGridLayout(self)
        self.layout.addWidget(self.instructional_label, 1, 1,
            alignment=QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.layout.addLayout(formlayout, 2, 1)
        self.layout.setRowStretch(0, 1)
        self.layout.setRowStretch(3, 1)
        self.layout.setColumnStretch(0, 1)
        self.layout.setColumnStretch(2, 1)
  
        self.back_button = QtWidgets.QPushButton(self)
        self.back_button.setObjectName("back_button")
        self.back_button.setText("<- Back")
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#from enter_or_register import EnterOrRegister
# ??? class EnterOrRegister(LogosForEnterOrRegister, QWidget):
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
            | QtCore.Qt.AlignmentFlag.AlignVCenter)
        self.select_enter_register.adjustSize()

        self.enter_button = QtWidgets.QPushButton(self)
        self.enter_button.setObjectName("enter_button")
        self.enter_button.setText("Enter")
        
##        self.enter_button.setFixedSize(300, 100)
        self.enter_button.setFixedSize(150, 70)

        self.register_label = QtWidgets.QLabel(self)
        self.register_label.setObjectName("register_label")
        self.register_label.setText("Not logged in yet?")
        self.register_label.setWordWrap(False)
        self.register_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
        self.register_label.adjustSize()

        self.register_button = QtWidgets.QPushButton(self)
        self.register_button.setObjectName("register")
        self.register_button.setText("Register")
        self.register_button.adjustSize()

        self.back_button = QtWidgets.QPushButton(self)
        self.back_button.setObjectName("back_button")
        self.back_button.setText("<- Back")
        self.back_button.adjustSize()

        self.QVB_layout = QtWidgets.QVBoxLayout(self)
        self.QVB_layout.addWidget(self.select_enter_register)
        self.QVB_layout.addWidget(self.enter_button,
            alignment=QtCore.Qt.AlignmentFlag.AlignCenter)
        self.QVB_layout.addWidget(self.register_label,
            alignment=QtCore.Qt.AlignmentFlag.AlignCenter)
        self.QVB_layout.addWidget(self.register_button,
            alignment=QtCore.Qt.AlignmentFlag.AlignTop)
        
        self.facebook_logo_label = QtWidgets.QLabel(self)
        self.facebook_logo = QtGui.QPixmap("head.jpg")
# ?        self.facebook_logo_label.setPixmap(self.facebook_logo)
# ?        self.facebook_logo_label.adjustSize()
# !!! +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
        self.facebook_logo_label.setPixmap(
            self.facebook_logo.scaled(self.facebook_logo_label.size(),
                Qt.KeepAspectRatio, Qt.SmoothTransformation))
        self.facebook_logo_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.facebook_logo_label.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        self.facebook_logo_label.setMinimumSize(50, 50)     
        self.facebook_logo_label.setMaximumSize(250, 250)        
        
        self.git_hub_logo_label = QtWidgets.QLabel(self)
        self.git_hub_logo = QtGui.QPixmap("head3.png")
        self.git_hub_logo_label.setPixmap(
            self.git_hub_logo.scaled(self.git_hub_logo_label.size(),
                Qt.KeepAspectRatio, Qt.SmoothTransformation))
        self.git_hub_logo_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.git_hub_logo_label.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        self.git_hub_logo_label.setMinimumSize(50, 50)     
        self.git_hub_logo_label.setMaximumSize(250, 250)  
        
        self.google_logo_label = QtWidgets.QLabel(self)
        self.google_logo = QtGui.QPixmap("im.png")
        self.google_logo_label.setPixmap(self.google_logo)
        self.google_logo_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.google_logo_label.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        self.google_logo_label.setMinimumSize(50, 50)     
        self.google_logo_label.setMaximumSize(250, 250)  
   
        self.yandex_logo_label = QtWidgets.QLabel(self)
        self.yandex_logo = QtGui.QPixmap("lena2.png")
        self.yandex_logo_label.setPixmap(self.yandex_logo)
        self.yandex_logo_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.yandex_logo_label.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        self.yandex_logo_label.setMinimumSize(50, 50)     
        self.yandex_logo_label.setMaximumSize(250, 250) 
        
        self.meta_logo_label = QtWidgets.QLabel(self)
        self.meta_logo = QtGui.QPixmap("Ok.png")
        self.meta_logo_label.setPixmap(
            self.meta_logo.scaled(self.meta_logo_label.size(),
                Qt.KeepAspectRatio, Qt.SmoothTransformation))
        self.meta_logo_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.meta_logo_label.setAlignment(Qt.AlignHCenter | Qt.AlignBottom)
        self.meta_logo_label.setMinimumSize(50, 50)     
        self.meta_logo_label.setMaximumSize(250, 250)         

        self.QHB_logo_layout = QtWidgets.QHBoxLayout()
        self.QHB_logo_layout.addWidget(self.facebook_logo_label)    
        self.QHB_logo_layout.addWidget(self.git_hub_logo_label)
        self.QHB_logo_layout.addWidget(self.google_logo_label)
        self.QHB_logo_layout.addWidget(self.yandex_logo_label)
        self.QHB_logo_layout.addWidget(self.meta_logo_label)        
        self.QVB_layout.addLayout(self.QHB_logo_layout)

    def resizeEvent(self, event):                                   # !!! +++ 
        scaledSize = self.facebook_logo_label.size()                       
        scaledSize.scale(self.facebook_logo_label.size(), Qt.KeepAspectRatio)
        if not self.facebook_logo_label.pixmap() or scaledSize != self.facebook_logo_label.pixmap().size():
            self.updateLabel()    
            
    def updateLabel(self):                                           # !!! +++   
        size = self.facebook_logo_label.size()
        self.facebook_logo_label.setPixmap(self.facebook_logo.scaled(        
                size, Qt.KeepAspectRatio, Qt.SmoothTransformation))
        self.git_hub_logo_label.setPixmap(self.git_hub_logo.scaled(        
                size, Qt.KeepAspectRatio, Qt.SmoothTransformation))
        self.google_logo_label.setPixmap(self.google_logo.scaled(        
                size, Qt.KeepAspectRatio, Qt.SmoothTransformation))          
        self.yandex_logo_label.setPixmap(self.yandex_logo.scaled(        
                size, Qt.KeepAspectRatio, Qt.SmoothTransformation))
        self.meta_logo_label.setPixmap(self.meta_logo.scaled(        
                size, Qt.KeepAspectRatio, Qt.SmoothTransformation))         
# !!! +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    

#from quiz_application import QuizApplication
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.setWordWrap(True)                                 # +++
        
        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, 650, 600)
        self.resize(645, 500)

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

        self.quizApplication = QuizApplication()
        self.enterOrRegister = EnterOrRegister()
        self.loginwindow = LoginWindow()
        self.logosForEnterOrRegister = LogosForEnterOrRegister()

        self.stack = QtWidgets.QStackedWidget(self)
        self.ix_stack_1 = self.stack.addWidget(self.quizApplication)
        self.ix_stack_2 = self.stack.addWidget(self.enterOrRegister)
        self.ix_stack_3 = self.stack.addWidget(self.loginwindow)
        self.ix_stack_4 = self.stack.addWidget(self.logosForEnterOrRegister)

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

        self.quizApplication.start_button.clicked.connect(
            self.on_start_button_clicked)
        self.enterOrRegister.register_button.clicked.connect(
            self.on_register_button_clicked)
        self.enterOrRegister.back_button.clicked.connect(
            self.on_back_button_clicked)
            
        self.loginwindow.back_button.clicked.connect(                       # +++
            lambda : self.stack.setCurrentIndex(1))
        self.logosForEnterOrRegister.back_button.clicked.connect(           # +++
            lambda : self.stack.setCurrentIndex(1))

        self.enterOrRegister.enter_button.clicked.connect(
            self.on_enter_button_clicked
        )
        
    def on_start_button_clicked(self):
        self.stack.setCurrentIndex(1)
        self.setStyleSheet("""border-image: unset;""")
        self.enterOrRegister.resize(self.size())
        self.setWindowTitle("Page EnterOrRegister")

    def on_register_button_clicked(self):
        self.stack.setCurrentIndex(2)
        self.setStyleSheet("""border-image: unset;""")
        self.setWindowTitle("Page LoginWindow")

    def on_enter_button_clicked(self):
        pass
        self.stack.setCurrentIndex(3)                                    # +++
        # self.setStyleSheet("""border-image: unset;""")                 # +++
        self.setWindowTitle("Page LogosForEnterOrRegister")              # +++

    def on_back_button_clicked(self):
        self.stack.setCurrentIndex(0)
        self.setStyleSheet("""
            #centralwidget {
                border-image: url(boy.jpg)"\
                "0 0 0 0 stretch stretch;
            }
        """)
        self.setWindowTitle("Quiz Application")                          # +

StyleSheet = """
#centralwidget {
    border-image: url(background.png)"\
    "0 0 0 0 stretch stretch;
}
#welcome_label {
    font-size: 23px;
    color: #F55;
}
#start_button {
    font-size: 20px;
    color: #ADFF2F;
    background-color: #008000;
}
#back_button {
    font-size: 20px;
    background-color: #008000;
}
#select_enter_register {
    font-size: 21px;
    color: #00FA9A;
}
#instructional_label {
    font-size: 20px;
    color: rgba(135, 155, 200, 226);
    padding-top: 15px;
}
#register_label {
    font-size: 20px;
    color: rgba(35, 255, 121, 226);
}
#enter_button {
    font-size: 20px;
    background-color: #008000;
    color: rgba(255, 255, 0, 226);
}
#register {
    font-size: 20px;
    background-color: #008000;
    color: rgba(255, 255, 0, 226);
}
"""


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


if __name__ == "__main__":
    application_setup()

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения