Je travaille sur une application dans PyQt4 de Python et je ne trouve pas comment changer l'icône de la barre des tâches. J'ai créé mes fichiers .ui dans Qt's Designer, où je peux changer les propriétés windowIcon
. Mais ce n'est pas ce que je recherche. Je souhaite modifier l'apparence de l'icône de l'application dans la barre des tâches de Windows. Pour l'instant, c'est Python dans une icône de fenêtre.
J'ai trouvé des informations sur SO: link mais cela ne m'aide pas beaucoup.
J'ai essayé:
app = QtGui.QApplication([])
app.setWindowIcon(QtGui.QIcon('chip_icon_normal.png'))
app.exec_()
Mais l'icône reste inchangée.
Ce que je veux changer, montrant l'image: (Cela se fait en appelant le setWindowIcon sur la fenêtre/boîte de dialogue principale, ou l'application, comme indiqué ci-dessus.)
Ce problème est dû à certaines particularités dans la façon dont les icônes de la barre des tâches sont gérées sur la plate-forme Windows.
Voir cette réponse pour plus de détails, ainsi qu'une solution de contournement utilisant ctypes
.
Il me semble que le problème peut être dû au manque d'icône de bonne taille. La configuration suivante a fonctionné pour moi dans 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)
J'ai une icône de barre des tâches dans Windows 7 et des icônes correctes dans toutes les fenêtres sans aucune modification des fichiers ui.
Pour moi, le code suivant fonctionne à la fois pour changer l'icône de la barre des tâches et l'icône de la fenêtre
win.setWindowIcon(QIcon('logo.png'))
Vous devez appeler setWindowIcon (...) sur la fenêtre, pas sur l'application.
Voici un exemple, qui fonctionne pour moi:
#!/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:])