QApplication Font Color - PullRequest
       8

QApplication Font Color

0 голосов
/ 16 августа 2011

Я пишу скрипт системного лотка PyQt.Это просто переключатель для системных служб.Я добавляю QActions в QMenu с помощью этого кода, моя цель - показать работающие сервисы зелеными и остановленные сервисы красным:

....
for service, started in s.services.items():
    action = self.menu.addAction(service)

    if started: #It is my purpose, but obviously it doesn't work
        action.setFontColor((0, 255, 0))
    else:
        action.setFontColor((255, 0, 0))

    action.triggered.connect(functools.partial(self.service_clicked, service))
....    

Проблема в том, что у QAction нет метода setFontColor :).У него есть метод setFont, но я не смог увидеть метод, связанный с цветом, в документации QFont.И он не поддерживает расширенное форматирование текста.

Я нашел возможное решение здесь , но кажется, что для этой простой операции так много работы.

Может кто-нибудь предложитьмне проще?

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Не совсем то, что вы хотите, но вы можете изменить значок, связанный с QAction, например, на. красная или зеленая точка очень просто: чтобы текст меню не менял цвет, а точка.

....
for service, started in s.services.items():
    action = self.menu.addAction(service)

    if started: #It is my purpose, but obviously it doesn't work
        action.setIcon(QIcon(":/greendot.png"))
    else:
        action.setIcon(QIcon(":/reddot.png"))

    action.triggered.connect(functools.partial(self.service_clicked, service))
....    
1 голос
/ 16 августа 2011

Единственный простой способ, который я вижу, - это сделать ваши QAction проверяемыми (и, например, определить, что «служба активна» должна проверять элемент), а затем поиграть с таблицами стилей Qt, чтобы получить желаемый эффект.

Примеры элементов меню стилей можно найти здесь: Таблицы стилей Qt - Настройка QMenu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...