Почему не получается изменить размер окна после нажатия кнопки в PyQt6
Я пишу программу на 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
)
Вот изображения приложения: