Как установить цвет фона QWidget?

Строка 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_()

Ответ 1

Вам нужно позвонить setAutoFillBackground(True) в виджет. По умолчанию a QWidget не заполняет свой фон.

Для получения дополнительной информации см. документацию для свойства setAutoFillBackground.

Если вы хотите использовать произвольный фоновый цвет, вам нужно изменить палитру виджета:

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