3
    {btn = QtGui.QPushButton('Button', self)

    palettes = btn.palette()
    palettes.setColor(btn.backgroundRole(),QtCore.Qt.green)

    btn.setPalette(palettes)
    btn.setAutoFillBackground(True)}

使用btn.backgroundRole()只为按钮提供绿色边框。
使用btn.foregroundRole()更改按钮的文本颜色
使用btn.windowRole()给我错误

TypeError:参数与任何重载调用不匹配:
QPalette.setColor(QPalette.ColorGroup, QPalette.ColorRole, QColor): 参数 1 具有意外类型 'str'
QPalette.setColor(QPalette.ColorRole, QColor): 参数 1 具有意外类型'字符串'

尝试QtGui.QPalette.Background代替btn.windowRole()但什么都不做
也尝试过QtGui.QPalette.Base但什么
也不QtGui.QPalette.Window

如何使用调色板更改按钮颜色?
我无法纠正问题。我正在使用 Windows 7、PyQt4 和 Python 3.4

4

1 回答 1

2

您可以在 Qt 文档中阅读QPalette

警告:某些样式不会对所有绘图都使用调色板,例如,如果它们使用本机主题引擎。Windows XP、Windows Vista 和 Mac OS X 样式都是这种情况。

Windows 7 样式也不使用按钮的调色板颜色。您应该使用样式表为按钮添加颜色。如果您使用 Windows 7 风格以外的其他主题,您可以使用QPalette.Button角色来更改按钮颜色。

于 2015-02-01T05:16:55.367 回答