如何设置QWidget背景颜色?

问题描述 投票:0回答:2

下面代码中的

w.setBackgroundRole(QPalette.Base)
行没有任何效果。为什么?我该如何解决这个问题?

import sys
from PySide.QtCore import *
from PySide.QtGui import *

app = QApplication(sys.argv)
w = QWidget()
w.setBackgroundRole(QPalette.Base)
w.show()
app.exec_()
python pyqt pyside
2个回答
69
投票

您需要在小部件上调用

setAutoFillBackground(True)
。默认情况下,
QWidget
不会填充其背景。

有关更多信息,请参阅

setAutoFillBackground
属性的文档。

如果您想使用任意背景颜色,则需要修改小部件的调色板:

p = w.palette()
p.setColor(w.backgroundRole(), Qt.red)
w.setPalette(p)

9
投票

您还可以使用

setStyleSheet
例如:

w.setAttribute(Qt.Qt.WA_StyledBackground, True)
w.setStyleSheet('background-color: red;')
© www.soinside.com 2019 - 2024. All rights reserved.