Как добавить несколько lambda функций для кнопок в PyQt6
Я пишу программу на PyQt6 и мне нужно прописать код для кнопки.
Я использую lambda
функции для отклика кнопки. т.е. мне нужно сделать так, чтобы при нажатии кнопки очищались ВСЕ (включая и центральный виджет) виджеты и добавлялись другие.
В моем же коде убирается только сама кнопка и надпись сверху, а задний фон остается
Если вкратце мне нужно сделать так, чтобы при нажатии кнопки очищались все виджеты, включая задний фон (либо же он менялся на другой) и добавлялись другие.
main.py:
import sys
from PyQt6 import QtWidgets, QtCore
from PyQt6.QtWidgets import QApplication, QMainWindow, 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
)
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 = MainWindow()
window.show()
sys.exit(app.exec())
if __name__ == "__main__":
application_setup()