Setting the Windows taskbar icon in PyQt Setting the Windows taskbar icon in PyQt python python

Setting the Windows taskbar icon in PyQt


This problem is caused by some peculiarities in how taskbar icons are handled on the Windows platform.

See this answer for details, along with a workaround using ctypes.


It seems to me that the problem may be caused by lack of icon with the right size.The following setup worked for me in 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)

I have got a task bar icon in Windows 7 and correct icons in all windows without any changes to ui files.


You need to call setWindowIcon(...) on the window, not on the application.

Here's an example, which works for me:

#!/usr/bin/env python3import osimport sysimport subprocessimport os.pathfrom PyQt4 import QtGuifrom PyQt4 import QtCoreclass 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:])