【问题标题】:PyQt4 QPalette not workingPyQt4 QPalette 不工作
【发布时间】:2015-01-31 22:55:57
【问题描述】:
    {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

【问题讨论】:

  • 不了解 PyQt4,但这些是 C++ 中的 enums。也许 PyQt 有问题?你能尝试更新 PyQt 吗? (除此之外我没有太多帮助,因为我不是 Python 程序员......)

标签: python qt pyqt qpalette


【解决方案1】:

您可以在 Qt 文档中阅读有关 QPalette 的信息:

警告:有些样式并非所有绘图都使用调色板,因为 例如,如果他们使用本机主题引擎。这是这种情况 适用于 Windows XP、Windows Vista 和 Mac OS X 样式。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2012-12-18
    • 2016-05-14
    • 1970-01-01
    • 2013-04-14
    • 2015-03-04
    • 2010-12-25
    相关资源
    最近更新 更多