Setting the Windows taskbar icon in PyQt

半世苍凉 提交于 2019-11-26 11:24:47

问题


I\'m working on an applcation in Python\'s PyQt4 and cannot find how to change the taskbar icon. I made my .ui files in Qt\'s Designer, where I can change the windowIcon properties. But that is not what I am looking for. I want to change the look of the application\'s icon in windows taskbar. For now it is Python logo in a window icon.

I found some information on SO: link but it\'s not helping me much.

I tried:

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

But the icon remains unchanged.

What i want to change, showing the picture: (This is done calling the setWindowIcon on main window/ dialog, or the application, as shown above.)

\"Taskbar


回答1:


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.




回答2:


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.




回答3:


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

Here's an example, which works for me:

#!/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:])



回答4:


For me, the following code works for both changing task bar icon and window icon

win.setWindowIcon(QIcon('logo.png'))


来源:https://stackoverflow.com/questions/12432637/setting-the-windows-taskbar-icon-in-pyqt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!