Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用样式表设置qwidget的背景色?_Python_Pyqt_Pyqt5_Qtstylesheets - Fatal编程技术网

Python 如何使用样式表设置qwidget的背景色?

Python 如何使用样式表设置qwidget的背景色?,python,pyqt,pyqt5,qtstylesheets,Python,Pyqt,Pyqt5,Qtstylesheets,关于Qt样式表,我似乎不太明白。我只想将小部件的背景色设置为白色。但由于某些原因,背景色实际上只出现在我的小部件的子部件中 我试图将self.setAutoFillBackground(True)添加到我的代码中,但没有成功 我还尝试从中选择解决方案。它可以工作,但前提是我不设置样式表,这是底部边框所需要的 class TopLabelNewProject(qt.QWidget): def __init__(self, parent=None): super().__in

关于Qt样式表,我似乎不太明白。我只想将小部件的背景色设置为白色。但由于某些原因,背景色实际上只出现在我的小部件的子部件中

我试图将
self.setAutoFillBackground(True)
添加到我的代码中,但没有成功

我还尝试从中选择解决方案。它可以工作,但前提是我不设置样式表,这是底部边框所需要的

class TopLabelNewProject(qt.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        layout = qt.QHBoxLayout(self)
        layout.setContentsMargins(40, 0, 32, 0)
        self.setLayout(layout)
        self.setFixedHeight(80)
        self.setStyleSheet("""
            background-color: white;
            border-bottom: 1px solid %s;
            """ % colors.gray)

        self.label = qt.QLabel("Dashboard")
        self.label.setStyleSheet("""
            QLabel {
                font: medium Ubuntu;
                font-size: 20px;
                color: %s;
            }""" % colors.gray_dark)
        layout.addWidget(self.label, alignment=qt.Qt.AlignLeft)

        self.newProjectButton = Buttons.DefaultButton("New project", self)
        layout.addWidget(self.newProjectButton, alignment=qt.Qt.AlignRight)
注意:Buttons.DefaultButton只是一个带有自定义样式表的QPushButton

这就是我想要实现的,一个带有标签和按钮的白色标题栏:

但只有标签有白色背景

试试看:

import sys
from PyQt5 import Qt as qt 

class TopLabelNewProject(qt.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        layout = qt.QHBoxLayout(self)
        layout.setContentsMargins(40, 0, 32, 0)
        self.setLayout(layout)
        self.setFixedHeight(80)

        self.label = qt.QLabel("Dashboard")

        layout.addWidget(self.label, alignment=qt.Qt.AlignLeft)

#        self.newProjectButton = Buttons.DefaultButton("New project", self)
        self.newProjectButton = qt.QPushButton("New project", self)
        layout.addWidget(self.newProjectButton, alignment=qt.Qt.AlignRight)


style = '''
QWidget {
    background-color: white;
} 

QLabel {
    font: medium Ubuntu;
    font-size: 20px;
    color: #006325;     
}        

QPushButton {
    background-color: #006325;
    color: white;

    min-width:  70px;
    max-width:  70px;
    min-height: 70px;
    max-height: 70px;

    border-radius: 35px;        
    border-width: 1px;
    border-color: #ae32a0;
    border-style: solid;
}
QPushButton:hover {
    background-color: #328930;
}
QPushButton:pressed {
    background-color: #80c342;
}    

'''


if __name__ == '__main__':
    app = qt.QApplication(sys.argv)

    app.setStyleSheet(style)

    ex = TopLabelNewProject()
    ex.show()
    sys.exit(app.exec_())  

首先(仅更改一个小部件):右键单击小部件,单击“更改样式表”,样式表窗口打开,当您在窗口中保存内容时,小部件也将更改。 第二(更改所有选定的小部件):使用属性窗口,标记所有要更改的小部件,单击。。。样式表行的。当您现在更改所选的所有小部件时,样式表窗口将打开

插入样式表:


QLabel我找到了一个解决方案:
self.setAttribute(qt.qt.WA_StyledBackground,True)
,但我不明白为什么需要这样做。在样式表中设置背景色使我非常清楚地知道,我真的很想“使用样式化背景”这本作品的可能副本,谢谢。显然,如果我不希望我的应用程序中的所有其他
QWidgets
也有白色背景,并且我的所有按钮都是绿色和圆形的,那么我需要更具体地使用我的类型选择器。但是当我在应用程序上设置样式表而不是小部件时,看到不同的结果会使样式表机制更加复杂我看不清楚,明白吗
    QLabel{
    border-style: outset;
    border-width: 2px;
    border-color: black;
    Background-color: rgb(255,247,191);
    color: black;
    }