Изменить цвет текста QCheckBox в pyqt

Я хочу изменить цвет текста рядом с QCheckBox. Я пробовал эти 2 вопроса:

как изменить цвет текстовой метки QCheckBox в Qt?

Изменение цвета текста QCheckBox

Кажется, ни одно из этих решений не работает для меня.

p = QtGui.QPalette(self.chkbox[i].palette())
p.setColor(QPalette.Active,QPalette.WindowText, QtCore.Qt.red)
self.top_grid.addWidget(self.chkbox[i],i+2,0)

Редактировать 1: Вот минимальный рабочий код:

from PyQt4 import QtGui, QtCore
import sys

def main():
    app = QtGui.QApplication(sys.argv)
    w = QtGui.QWidget()
    top_grid = QtGui.QGridLayout()
    chkbox=[]
    chkbox.append(QtGui.QCheckBox('1'))
    chkbox[0].setStyleSheet("color: red")
    chkbox[0].setToolTip('<b>ABC</b>' )
    top_grid.addWidget(chkbox[0],0,0)
    w.setLayout(top_grid)    
    w.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

Когда я это делаю, цвет ToolTip меняется на красный, но текст рядом с флажком остается черным.

Редактировать 2: если я добавлю строку

app.setStyle('cleanlooks')

Оно работает. Стиль по умолчанию — sgi, где по какой-то причине цвет текста не меняется. Это работало со всеми другими стилями.


person Tanay    schedule 02.07.2015    source источник
comment
Минимальный код работает нормально.   -  person Sailesh Sriram    schedule 02.07.2015
comment
@SaileshSriram Цвет текста у меня не меняется. Только всплывающая подсказка становится красной.   -  person Tanay    schedule 02.07.2015
comment
Пример палитры неполный: вы также должны сделать self.chkbox[i].setPalette(p).   -  person ekhumoro    schedule 02.07.2015
comment
@Танай. На какой платформе вы это тестируете?   -  person ekhumoro    schedule 02.07.2015
comment
@ekhumoro Я добавил строку setPalette, но она все еще не отображалась. Я использую Убунту 12.04.   -  person Tanay    schedule 03.07.2015
comment
@Танай. Попробуйте изменить стиль виджета. Если это не имеет значения, вероятно, это что-то специфичное для вашей установки Ubuntu. Какой ДЭ вы используете?   -  person ekhumoro    schedule 03.07.2015
comment
Это работало в другом стиле! Я использую Юнити. Спасибо :)   -  person Tanay    schedule 03.07.2015
comment
@Tanay, пожалуйста, опубликуйте минимальный код кода, который сработал у вас, для будущих посетителей. Я использовал Windows, когда отправил ответ, но теперь я проверил его на Linux Mint 17, это не сработало.   -  person qurban    schedule 03.07.2015
comment
@qurban Пожалуйста, проверьте, работает ли это сейчас.   -  person Tanay    schedule 03.07.2015


Ответы (1)


Вы можете сделать это с помощью таблицы стилей:

for chbox in self.chkbox:
    chbox.setStyleSheet("color: red")
person qurban    schedule 02.07.2015
comment
Объект «QCheckBox» не имеет атрибута «SetStyleSheet», когда я пытаюсь это сделать. - person Tanay; 02.07.2015
comment
Первая буква всех методов должна быть строчной - person qurban; 02.07.2015
comment
Извините, я должен был это заметить! Это все еще не работает. Цвет текста не меняется. - person Tanay; 02.07.2015
comment
Опубликуйте минимальный рабочий пример, чтобы я мог его отладить - person qurban; 02.07.2015
comment
Я добавил это к вопросу - person Tanay; 02.07.2015
comment
Я скопировал и вставил ваш код, здесь все сработало. Цвет был красным для текста - person qurban; 02.07.2015