【发布时间】:2020-01-06 18:13:41
【问题描述】:
我正在尝试创建一个背景颜色可以更改的自定义 QWidget(来自 PyQt5)。但是,所有设置背景颜色的标准方法似乎都不适用于自定义 QWidget 类
到目前为止,我已经尝试通过 QSS 样式表和设置调色板来更改颜色。这适用于常规 QWidget,但由于某种原因不适用于自定义小部件。
我在 C++ 文档https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget 中找到了需要 paintEvent() 函数的参考自定义 QWidget,并且确实在 Python 中找到了对它的引用。但是,由于 PyQt5 中似乎不存在 QStyleOption,所以实现链接的paintevent 失败。
下面显示了我创建的 QWidget 类的高级(它还包含一堆标签)和我用于 Widget 的 QSS(样式已在父小部件中设置但已尝试直接设置)
class AlarmWidget(QWidget):
def __init__(self, alarm, parent=None):
super(AlarmWidget, self).__init__(parent)
self.setFixedHeight(200)
self.setProperty("active", True)
self.setAutoFillBackground(True)
p = self.palette()
p.setColor(self.backgroundRole(), PyQt5.QtCore.Qt.red)
self.setPalette(p)
AlarmWidget {
background-color: red
}
总的来说,无论我做什么,它都不允许我为自定义 QWidget 设置背景颜色,所以非常感谢帮助
【问题讨论】:
标签: python python-3.x pyqt5 qwidget qtstylesheets