最近在学习PyQT5,参考 http://www.cnblogs.com/archisama/p/5442071.html 的教程,教程翻译自:zetcode , 刚开始就遇到了一个奇怪问题,就是在设置应用的icon的时候,在osx 10.11.6系统,按照例程死活显示不出来图标。
例程是这样的:
#!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This example shows an icon in the titlebar of the window. author: Jan Bodnar website: zetcode.com last edited: January 2015 """ import sys 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') self.setWindowIcon(QIcon('web.png')) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
Google搜索了一下,发现在 stackoverflow 也有人遇到同样的问题。如果按采用的答案也没有成功,但确实是要把这个方法放到Qapplication实例,然后再加上第二个哥们的回答,在 Qicon 里再调用一次Qpixmap ,并且传入一个ico格式的图片才能成功。完整代码如下:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- import sys,os import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QIcon,QPixmap class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 220) self.setWindowTitle('Hello Icon') self.show() if __name__ == '__main__': app = QApplication(sys.argv) path = os.path.join(os.path.dirname(sys.modules[__name__].__file__), 'good.ico') app.setWindowIcon(QIcon(QPixmap(path))) ex = Example() sys.exit(app.exec_())
这样就显示出来了。