如何设置QWidget背景颜色?

时间:2012-09-29 18:55:32

标签: python pyqt pyside

以下代码中的行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_()

2 个答案:

答案 0 :(得分:42)

您需要在小部件上调用setAutoFillBackground(True)。默认情况下,QWidget不会填充其背景。

有关详细信息,请参阅setAutoFillBackground属性的文档。

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

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

答案 1 :(得分:0)

您也可以使用 setStyleSheet 例如:

w.setAttribute(Qt.Qt.WA_StyledBackground, True)
w.setStyleSheet('background-color: red;')