设置布局的背景颜色

12

由于布局对象没有属性“.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])
1个回答

15
您可以在一个空的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)

1
它不是设置循环的每个布局,而是设置整个框架。 - user-2147482637
我的错误,我已经修复了。 - Yoann Quenach de Quivillic
你不能在一个容器上使用 .addWidget() 方法,因为它本身就是一个小部件。 - user-2147482637
我不这样做。我在布局上使用addWidget。 - Yoann Quenach de Quivillic
抱歉,我没有看到你代码中的一些差异。 - user-2147482637

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接