ljy ljy - 5 months ago 31
Python Question

why using PyQt5 on mac can not add a icon?

import sys
import os
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon

class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()

def initUI(self):
self.setGeometry(300,300,300,220)
self.setWindowTitle('Icon')

path = os.path.join(os.path.dirname(sys.modules[__name__].__file__), 'icon_1.png')
self.setWindowIcon(QIcon(path))

self.show()

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())


I also use a relative path like
self.setWindowIcon(QIcon('icon_1.png'))

I am sure icon_1.png is at the directory.But the result is always like that:

with no icon in the window and Dock

So where did I make some wrong? I am a newbie in both PyQt and StackOverflow and English... Hope the post is valid.

Thank you in advance.

Answer

setWindowIcon is a method for QApplocation, not for QWidget and friends

Here is a working version of your test script

import sys
import os
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon

class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300,300,300,220)
        self.setWindowTitle('Icon')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    path = os.path.join(os.path.dirname(sys.modules[__name__].__file__), 'icon_1.png')
    app.setWindowIcon(QIcon(path))
    ex = Example()
    sys.exit(app.exec_())
Comments