【问题标题】:How to set QWidget background color?如何设置 QWidget 背景颜色?
【发布时间】:2012-09-21 06:07:32
【问题描述】:

下面代码中的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


    【解决方案1】:

    您也可以使用setStyleSheet,例如:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 欢迎来到stackoverflow!感谢您回答“为什么”和“如何”!
      • 没问题。我应该补充一点,Qt 文档有点不清楚:QPalette::Window 角色用于填充小部件的背景(如果它是顶级窗口)。否则,将使用您的小部件的 backgroundRole,因此您的代码应该按预期工作。
      猜你喜欢
      • 2018-03-09
      • 2020-01-06
      • 2019-06-21
      • 1970-01-01
      • 2010-12-11
      • 2020-04-21
      • 2013-05-06
      相关资源
      最近更新 更多