PyQt:为应用程序的所有文本提供颜色

问题描述 投票:0回答:2

我想更改 PyQt 中应用程序的外观。例如,我希望所有文本(按钮、标签等)都是白色的,所有按钮都是某种颜色。 我可以在主窗口中一次性更改所有内容吗?

我执行了以下操作来更改整个应用程序的背景颜色:

self.setStyleSheet("QMainWindow {background-color: #252526; color: #FFFFFF}")

如果我以相同的方式为 QPushButton 设置另一个样式表,则 QMainWindow 的样式将被覆盖。

pyqt stylesheet
2个回答
4
投票

您可以在 QApplication 实例上调用 setStyleSheet() 方法并指定 CSS 字符串中的所有对象名称:

app = QtGui.QApplication.instance()
app.setStyleSheet('QLabel{color: #fff;} QPushButton{background-color: #000; color: #fff}')

0
投票

今天寻找解决方案的人我使用了下面的代码。唯一的缺点是当您禁用小部件时,您将需要手动更改颜色。

from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout,  QFrame

STYLE_SHEET = """

    QWidget
    {
        color: red;
    }

"""

class Win(QMainWindow):

    def __init__(self):
        super(QMainWindow, self).__init__()

        layout = QVBoxLayout()
        container = QFrame()
        container.setLayout(layout)

        self.setCentralWidget(container)

        lbl = QLabel("Click this button:")
        layout.addWidget(lbl)

        btn = QPushButton("Hello World")
        layout.addWidget(btn)

        self.show()


if __name__ == "__main__":

    app = QApplication([])
    app.setStyleSheet(STYLE_SHEET)
    win = Win()
    app.exec()
© www.soinside.com 2019 - 2024. All rights reserved.