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.


person Freiza    schedule 31.01.2015    source источник
comment
Не знаю насчет PyQt4, но это enums в C ++. Может проблема с PyQt? Не могли бы вы попробовать обновить PyQt? (Я не особо помогаю, так как я не программист на Python ...)   -  person Vinícius Gobbo A. de Oliveira    schedule 01.02.2015


Ответы (1)


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

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

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

person Nejat    schedule 01.02.2015