24

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

2 回答 2

59

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

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

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

p = w.palette()
p.setColor(w.backgroundRole(), Qt.red)
w.setPalette(p)
于 2012-09-29T19:01:30.610 回答
1

您还可以使用setStyleSheet例如:

w.setAttribute(Qt.Qt.WA_StyledBackground, True)
w.setStyleSheet('background-color: red;')
于 2021-04-28T16:41:51.077 回答