2015-01-31 4 views
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() дает мне ошибку
PyQt4 QPalette не работает

TypeError: arguments did not match any overloaded call:
QPalette.setColor(QPalette.ColorGroup, QPalette.ColorRole, QColor): argument 1 has unexpected type 'str'
QPalette.setColor(QPalette.ColorRole, QColor): argument 1 has unexpected type 'str'

Пробовал QtGui.QPalette.Background вместо btn.windowRole(), но ничего не делает
также попытался QtGui.QPalette.Base, но ничего не делает
А также QtGui.QPalette.Window ничего не делает

Как изменить цвет кнопки с помощью палитр?
Я не могу исправить проблему. Я использую Windows 7, PyQt4 и Python 3.4

+0

Не знаю о PyQt4, но это 'enums' на C++. Может быть, проблема с PyQt? Не могли бы вы попытаться обновить PyQt? (Я не очень много понимаю, потому что я не программист на Python ...) –

ответ

2

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

Warning: Some styles do not use the palette for all drawing, for instance, if they make use of native theme engines. This is the case for both the Windows XP, Windows Vista, and the Mac OS X styles.

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