PyQt4 QPalette无法正常工作

时间:2015-01-31 22:55:58

标签: python qt pyqt qpalette

    {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有   意外类型'str'

尝试QtGui.QPalette.Background代替btn.windowRole(),但没有做任何事 还试过QtGui.QPalette.Base但没有做任何事 并且QtGui.QPalette.Window也没有做任何事

如何使用调色板更改按钮颜色?
我无法纠正这个问题。我使用的是Windows 7,PyQt4和Python 3.4

1 个答案:

答案 0 :(得分:2)

您可以在Qt文档中阅读QPalette

  

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

Windows 7样式也不使用按钮的调色板颜色。您应该使用样式表为按钮指定颜色。如果您使用除Windows 7样式之外的其他主题,则可以使用QPalette.Button角色更改按钮颜色。