如何使用PySide中的样式表为整个小部件设置背景颜色

时间:2015-07-24 17:13:24

标签: css qt stylesheet pyside background-color

我正在尝试设置窗口小部件的背景颜色,但它仅适用于窗口小部件的子窗口。下面的代码是真实应用程序结构的简单表示。我想testWidget是完全红色的,因为它的大小是100x100像素矩形,但由于某种原因只有按钮是红色的。

from PySide import QtGui


class Widget(QtGui.QWidget):
def __init__(self):
    QtGui.QWidget.__init__(self)

    mainLayout = QtGui.QVBoxLayout(self)

    testWidget = QtGui.QWidget()
    testWidget.setFixedSize(100,100)

    testWidget.setStyleSheet('background-color: red;')
    testLayout = QtGui.QVBoxLayout()

    testWidget.setLayout(testLayout)


    but = QtGui.QPushButton('TEST')
    but.setFixedSize(20,20)
    testLayout.addWidget(but)

    mainLayout.addWidget(testWidget)

w = Widget()
w.show()

1 个答案:

答案 0 :(得分:4)

默认情况下,QWidget不会填充其背景。您可以使用QFrame代替,也可以将WA_StyledBackground的{​​{1}}属性设置为True,如下所示:PySide: QWidget does not draw background color

要仅将样式表应用于容器而不应用于其子容器,可以命名容器窗口小部件,并通过引用其名称来专门应用样式表。

以下是源自您的代码的MWE,它显示了如何使用QFrame而不是QWidget来完成它:

QWidget

导致:

enter image description here

相关问题