Как добавить StyleSheet ко второму окну в PyQt6?

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

Я делаю многооконное приложение на PyQt6 и хочу добавить метод StyleSheet ко второму окну, но не знаю как это сделать (я пишу в силе ооп).

main.py:

from PyQt6 import QtWidgets

import sys


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

        self.setWindowTitle("Quiz Application")
        self.setGeometry(300, 50, 645, 500)

        self.layout = QtWidgets.QGridLayout()

        self.start_button = QtWidgets.QPushButton(self)
        self.start_button.setObjectName("start_button")
        self.start_button.setText("Start Quiz")
        self.start_button.clicked.connect(self.on_start_clicked)
        self.start_button.adjustSize()
    
        self.layout.addWidget(self.welcome_label)
        self.layout.addWidget(self.background_label)
        self.layout.addWidget(self.start_button)
        self.layout.setSpacing(10)

        self.setLayout(self.layout)

    def on_start_clicked(self):
        self.login_window = LoginWindow()
        self.login_window.show()

StyleSheet = """
#start_button {
    font-size: 20px;
    color: #ADFF2F;
    background-color: #008000;
}
"""

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


if __name__ == "__main__":
    application_setup()

window_2.py:

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


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

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

        self.instructional_label = QtWidgets.QLabel(self) # и как добавить Stylesheet к этой надписи???
        self.instructional_label.setObjectName("instructional_label")
        self.instructional_label.setText("Please enter your login and password")
        self.instructional_label.setWordWrap(False)
        self.instructional_label.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)

        self.layout = QGridLayout(self)
        self.layout.addWidget(self.instructional_label)

        self.setLayout(self.layout)

я пробовал сделать добавить StyleSheet в первом файле но ничего не работает

Ответы

▲ 1Принят

Как вариант:

StyleSheet = """

...

/* так можно добавить Stylesheet к надписи instructional_label      <---- */
#instructional_label {
    font-size: 20px;
    color: #ADF;
    background-color: #008;
}
"""

main.py:

import sys
'''       
from PyQt6 import QtCore, QtWidgets
from PyQt6.QtWidgets import QWidget, QGridLayout
'''
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *

# так:
# from window_2  import LoginWindow
#
# или так:
class LoginWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Login Window")
        self.setGeometry(300, 300, 500, 300)

        # и как добавить Stylesheet к надписи instructional_label ???
        self.instructional_label = QtWidgets.QLabel(self) 
        self.instructional_label.setObjectName("instructional_label")
        self.instructional_label.setText("Please enter your login and password")
        self.instructional_label.setWordWrap(False)
        self.instructional_label.setAlignment(
# +         vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv v 
            QtCore.Qt.AlignmentFlag.AlignHCenter | QtCore.Qt.AlignmentFlag.AlignTop)

        self.layout = QGridLayout(self)
        self.layout.addWidget(self.instructional_label)
#        self.setLayout(self.layout)


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

        self.setWindowTitle("Quiz Application")
        self.setGeometry(300, 50, 645, 500)

        self.layout = QtWidgets.QGridLayout()

        self.start_button = QtWidgets.QPushButton(self)
        self.start_button.setObjectName("start_button")
        self.start_button.setText("Start Quiz")
        self.start_button.clicked.connect(self.on_start_clicked)
        self.start_button.adjustSize()
    
# ?      self.layout.addWidget(self.welcome_label)
# ?      self.layout.addWidget(self.background_label)
        self.layout.addWidget(self.start_button)
        self.layout.setSpacing(10)
        self.setLayout(self.layout)

    def on_start_clicked(self):
        self.login_window = LoginWindow()
        self.login_window.show()


StyleSheet = """
#start_button {
    font-size: 20px;
    color: #ADFF2F;
    background-color: #008000;
}

/* так можно добавить Stylesheet к надписи instructional_label         <---- */
#instructional_label {
    font-size: 20px;
    color: #ADF;
    background-color: #008;
}
"""


if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setStyleSheet(StyleSheet)
    window = QuizApplication()
    window.show()
    sys.exit(app.exec())

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