LINUX.ORG.RU

Смена иконки в панели пуск setWindowIcon

 


0

2

Господа, всем добрый день. Сразу прошу прощение за вопрос по винде, считаю, что это больше кутешный вопрос. Проблема: Для установки иконки приложения использую setWindowIcon (иконка берется из ресурсов) в процессе работы программы, в зависимости от количества новых событий, перерисовываю иконку использую painter (На иконке рисуется красный круг и цифра с числом новых сообщений). В трее все норм, в заголовке окна и при нажатии alt+tab (в иконке) тоже все норм, иконка постоянно меняется, а вот в панели ПУСК иконка меняться упорно не хочет, та, что в первый раз была установлена, больше не меняется. Неообходимо, чтобы было аля skype (цифра на желтом фоне - число новых сообщений)

...
icon = self.createIcon(status, unanswered_messages, Qt.Qt.AlignCenter)
self.tray.setIcon(icon)
icon = self.createIcon(':/general/app_icon', unanswered_messages, Qt.Qt.AlignCenter)
self.setWindowIcon(icon)

def createIcon(self, base, text='', textAlign=Qt.Qt.AlignCenter):
        pixmap = Qt.QPixmap(base)
        image = pixmap.toImage()
        painter = Qt.QPainter();
        painter.begin(image)

        bgrect = Qt.QRect(image.rect())
        if base == ':/general/app_icon':
            bgrect.setRect(bgrect.x() + 20, bgrect.y() + 20, bgrect.width() - 25, bgrect.height() - 20)
        else:
            bgrect.setRect(bgrect.x() + 2, bgrect.y() + 2, bgrect.width() - 5, bgrect.height() - 5)
        painter.setBrush( Qt.QBrush(Qt.Qt.red) )
        painter.drawEllipse(bgrect)

        if base == ':/general/app_icon':
            font = painter.font()
            font.setPixelSize(14)
            font.setBold(True)
            painter.setFont(font)
            painter.drawText(Qt.QRect(bgrect), textAlign, str(text))
        else:
            painter.drawText(image.rect(), textAlign, str(text))
        painter.end()
        return Qt.QIcon(Qt.QPixmap.fromImage(image))

А ты уверен что иконка в меню должна меняться из программы? Например в UNIX'ах это просто png файл, а иконка окна задается отдельно. Может и в винде что-то подобное создается? Или ты имеешь ввиду таскбар?

flareguner
()
Последнее исправление: flareguner (всего исправлений: 1)

1) Панель пуск в венде это ветка в реестре со всеми отсюда вытекающими говенными последствиями.

2) Иконки в каталога «Все программы» это ярлыки с иконами которые можно в реальных каталогах найти в домашнем каталоге пользователя.

MikeDM ★★★★★
()
Последнее исправление: MikeDM (всего исправлений: 1)
Ответ на: комментарий от flareguner

нижняя полоска (там где есть кнопка «Пуск») - панель задач (taskbar). Именно в ней должна меняться иконка, и именно в runtime.

energyclab
() автор топика
Ответ на: комментарий от energyclab

Странно, у меня при нажатии на кнопки иконки на таскбаре меняются в Win XP 32-bit, вот ссылка на пример: http://rghost.ru/49424963. Может быть она просто не перерисовывается?

flareguner
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.