PyQt4 установить значок панели задач Windows

Я работаю над приложением в Python PyQt4 и не могу найти, как изменить значок на панели задач. Я сделал свои.ui файлы в Qt's Designer, где я могу изменить windowIcon свойства. Но это не то, что я ищу. Я хочу изменить внешний вид значка приложения на панели задач Windows. На данный момент это логотип Python в значке окна.

Я нашел некоторую информацию о SO: link, но она мне не сильно помогает.

Я пытался:

app = QtGui.QApplication([])
app.setWindowIcon(QtGui.QIcon('chip_icon_normal.png'))
app.exec_()

Но значок остается без изменений.

Что я хочу изменить, показывая картинку: (Это делается с помощью вызова setWindowIcon в главном окне / диалоговом окне или в приложении, как показано выше.)

Изменение значка панели задач

4 ответа

Решение

Эта проблема вызвана некоторыми особенностями обработки значков панели задач на платформе Windows.

Посмотрите этот ответ для деталей, наряду с обходным путем, используя ctypes,

Мне кажется, что проблема может быть вызвана отсутствием иконки нужного размера. Следующая настройка работала для меня в PyQT4:

# set app icon    
app_icon = QtGui.QIcon()
app_icon.addFile('gui/icons/16x16.png', QtCore.QSize(16,16))
app_icon.addFile('gui/icons/24x24.png', QtCore.QSize(24,24))
app_icon.addFile('gui/icons/32x32.png', QtCore.QSize(32,32))
app_icon.addFile('gui/icons/48x48.png', QtCore.QSize(48,48))
app_icon.addFile('gui/icons/256x256.png', QtCore.QSize(256,256))
app.setWindowIcon(app_icon)

У меня есть значок панели задач в Windows 7 и правильные значки во всех окнах без каких-либо изменений в пользовательском интерфейсе файлов.

Вам нужно вызвать setWindowIcon(...) в окне, а не в приложении.

Вот пример, который работает для меня:

#!/usr/bin/env python3

import os
import sys
import subprocess
import os.path

from PyQt4 import QtGui
from PyQt4 import QtCore

class MyWin(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MyWin, self).__init__(parent)
        self.setWindowTitle("My Window")
        self.setWindowIcon(QtGui.QIcon('test_icon.png'))
        self.show()

def main(args):
    app = QtGui.QApplication([])

    ww= MyWin()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main(sys.argv[1:])

Для меня следующий код работает как для изменения значка панели задач и значка окна

win.setWindowIcon(QIcon('logo.png'))
Другие вопросы по тегам