Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 577
ljy Avatar asked Oct 30 '25 01:10

ljy


1 Answers

setWindowIcon is a method for QApplication, 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_())
like image 171
reno- Avatar answered Oct 31 '25 14:10

reno-