【问题标题】:Set background color of layout设置布局的背景颜色
【发布时间】:2015-02-14 12:38:49
【问题描述】:

由于布局对象没有属性“.setStyleSheet()”,如何设置给定布局的背景颜色?

作为直观的解释,我可以设置标签和按钮的背景颜色,但不能设置整个布局,包括分隔符。

以编程方式,我以水平布局组织一些信息并将它们显示在框架中。我想为每个循环替换背景颜色。

for param_name in parameters:
    hlayouts.append(QtGui.QHBoxLayout())
    labels.append(QtGui.QLabel("%s"%param_name))
    sliders.append(QtGui.QSpacerItem(10,10,hPolicy=QtGui.QSizePolicy.Expanding))
    spins.append(QtGui.QDoubleSpinBox())

    spins[index].setValue(float(values.get(param_name)))
    labels[index].setStyleSheet("background-color:black;")
    spins[index].setStyleSheet("background-color:black;")

    hlayouts[index].addWidget(labels[index])
    hlayouts[index].addItem(sliders[index])
    hlayouts[index].addWidget(spins[index])

    index += 1

vlayout = QtGui.QVBoxLayout()
for i in range(len(hlayouts)):
    vlayout.addLayout(hlayouts[i])

【问题讨论】:

    标签: python qt pyqt qtstylesheets qlayout


    【解决方案1】:

    您可以在一个空的 QWidget 上添加设置布局并在此小部件上设置 StyleSheet。

    for index, param_name in enumerate(parameters):
        container = QtGui.QWidget(self)
        layout = QtGui.QHBoxLayout(container )
    
        hlayouts.append(container)
        labels.append(QtGui.QLabel("%s"%param_name))
        sliders.append(QtGui.QSpacerItem(10,10,hPolicy=QtGui.QSizePolicy.Expanding))
        spins.append(QtGui.QDoubleSpinBox())
    
        spins[index].setValue(float(values.get(param_name)))
        container.setStyleSheet("background-color:black;")
    
        layout.addWidget(labels[index])
        layout.addItem(sliders[index])
        layout.addWidget(spins[index])
    
    
    vlayout = QtGui.QVBoxLayout(self)
    for widget in hlayouts:
        vlayout.addWidget(widget)
    

    【讨论】:

    • 不设置循环的每个布局,它设置整个框架
    • 我的错,我改正了
    • 你不能在一个小部件上使用 .addWidget() ,它是容器
    • 我没有。我在布局上使用 addWidget。
    • 很抱歉没有看到您的代码中的一些差异
    猜你喜欢
    • 2011-11-14
    • 2016-01-26
    • 2020-12-08
    • 1970-01-01
    • 2013-01-24
    • 2020-01-22
    • 1970-01-01
    相关资源
    最近更新 更多