【问题标题】:How to set background color to entire widget with stylesheet in PySide如何在 PySide 中使用样式表为整个小部件设置背景颜色
【发布时间】:2015-10-15 11:04:49
【问题描述】:

我正在尝试设置小部件的背景颜色,但它仅适用于小部件的子级。下面的代码是真实应用程序结构的简单表示。我希望 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()

【问题讨论】:

    标签: css qt stylesheet pyside background-color


    【解决方案1】:

    默认情况下,QWidget 不会填充其背景。您可以改用QFrame,也可以将QWidgetWA_StyledBackground 属性设置为True,如下所述:PySide: QWidget does not draw background color

    要将样式表仅应用于容器,而不应用于其子容器,可以命名容器小部件,并且可以通过引用其名称将样式表具体应用于它。

    下面是从您的代码派生的 MWE,它显示了如何使用 QFrame 而不是 QWidget 来完成:

    from PySide import QtGui
    import sys
    
    
    class Widget(QtGui.QWidget):
        def __init__(self):
            QtGui.QWidget.__init__(self)
    
            mainLayout = QtGui.QVBoxLayout(self)
    
            testWidget = QtGui.QFrame()
            testWidget.setFixedSize(100,100)
            testWidget.setObjectName("myWidget")
            testWidget.setStyleSheet("#myWidget {background-color:red;}") 
    
            testLayout = QtGui.QVBoxLayout()
    
            testWidget.setLayout(testLayout)
    
            but = QtGui.QPushButton('TEST')
            testLayout.addWidget(but)
    
            mainLayout.addWidget(testWidget)
    
    
    if __name__ == '__main__':
    
        app = QtGui.QApplication(sys.argv)
        instance_1 = Widget()
        instance_1.show()
        sys.exit(app.exec_())
    

    导致:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 2019-06-21
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      相关资源
      最近更新 更多