仅使用调色板获取和设置 QFrame 或 QGroupBox 的背景颜色

Posted

技术标签:

【中文标题】仅使用调色板获取和设置 QFrame 或 QGroupBox 的背景颜色【英文标题】:Get and set background color of QFrame or QGroupBox with ONLY palette 【发布时间】:2020-03-05 10:25:07 【问题描述】:

如何使用调色板获取和设置QFrameQGroupBox 的背景颜色?据我所知,我可以使用QPalette.ColorRole.Background 来影响它们,但这也会影响窗口颜色,所以不是获得较浅的阴影,而是将整个界面设置为纯色。有没有办法分别影响它们?

我知道我可以使用样式表,但在这种情况下,我只想尽可能使用调色板来实现它。

【问题讨论】:

【参考方案1】:

这样的?

from PySide import QtWidgets, QtGui

if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    frame = QtWidgets.QFrame()
    frame.setFrameShape(QtWidgets.QFrame.Box)
    frame.setLineWidth(3)
    frame.setAutoFillBackground(True)
    palette = frame.palette()
    palette.setBrush(QtGui.QPalette.Background, QtGui.QColor("#ff00ff"))
    frame.setPalette(palette)

    widget = QtWidgets.QWidget()
    w_layout = QtWidgets.QVBoxLayout(widget)
    w_layout.addWidget(frame)

    widget.resize(200, 200)
    widget.show()
    app.exec_()

【讨论】:

以上是关于仅使用调色板获取和设置 QFrame 或 QGroupBox 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

qframe不能设置边框

Qt:何时使用继承与设置属性?

从 ARGB 和/或十六进制调色板中获取颜色名称 [重复]

如何在 PySide2 中添加边框或设置透明 QLayout?

在 QFrame 中嵌入 IE 窗口

获取其他元素的 Angular Material 主题配色方案/调色板