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 ответ:
Вы можете прочитать в документации Qt о
QPalette
:Предупреждение: некоторые стили не используют палитру для всего рисунка, например: например, если они используют собственные тематические движки. Вот в чем дело для обоих стилей Windows XP, Windows Vista и Mac OS X.
Стиль Windows 7 также не использует цвета палитры для кнопок. Вы должны использовать таблицы стилей, чтобы придать цвет вашей кнопке. Если вы используете какую-то другую тему, кроме стиля Windows 7, Вы можете использовать роль
QPalette.Button
для изменения цвет кнопки.