PyQt4 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 3

1 ответ:

Вы можете прочитать в документации Qt о QPalette:

Предупреждение: некоторые стили не используют палитру для всего рисунка, например: например, если они используют собственные тематические движки. Вот в чем дело для обоих стилей Windows XP, Windows Vista и Mac OS X.

Стиль Windows 7 также не использует цвета палитры для кнопок. Вы должны использовать таблицы стилей, чтобы придать цвет вашей кнопке. Если вы используете какую-то другую тему, кроме стиля Windows 7, Вы можете использовать роль QPalette.Button для изменения цвет кнопки.