如何使用PyQt5设置窗口图标?

24
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Application(QMainWindow):
    def __init__(self):
        super(Application, self).__init__()
        self.setWindowIcon(QtGui.QIcon('icon.png'))

我试图设置一个窗口图标(窗口左上角的图标),但正常的图标却消失了。

我尝试使用许多图标分辨率(8x8、16x16、32x32、64x64)和扩展名(.png 和 .ico)。

我做错了什么?


1
使用绝对路径。 - ekhumoro
谢谢,但它没有起作用。我尝试了self.setWindowIcon(QtGui.QIcon('C:/Users/John/PycharmProjects/pythonproject/icon.png')). 另外,我不得不在导入中添加QtGui才能获取QIcon。我甚至不确定这是否是使用PyQt5的正确方法。 - HumanAfterAll
2
哦,我找到了我的错误,我以为我的图标是白色的背景上是黑色的,但实际上它是在透明的背景上是白色的。一切都正常工作了,使用self.setWindowIcon(QtGui.QIcon('icon.png'))。是我自己的问题,非常感谢ekhumoro的帮助! - HumanAfterAll
5个回答

16

根据提问者的建议,这个命令对我有效:

 self.setWindowIcon(QtGui.QIcon('icon.png'))

我放置了一个256x256像素的png图片,一切都正常。我使用的是64位Win 7专业版和32位Python 3.5.2。


10

问题的提问者已经给出了答案(不可见图标)。我想补充一下,脚本可能无法在脚本目录中执行。无论如何,为了安全起见,您可能需要确保该图标是相对于脚本所在的目录加载:

import os 
# [...]
scriptDir = os.path.dirname(os.path.realpath(__file__))
self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.png'))

1
这是唯一对我有效的方法!非常感谢!!! - SALMAANYEHIA

1

我正在使用PyQT5。代码应该如下:

icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("programmer.png"), QtGui.QIcon.Selected, QtGui.QIcon.On)
MainWindow.setWindowIcon(icon)

我一直收到“QPixmap:必须在QPixmap之前构造QGuiApplication”的错误信息。 - Ben

0
from PyQt5.QtGui import QIcon

self.setWindowIcon(QIcon('Notepad_Vista_10.png'))

1
当前您的回答写得不够清晰。请编辑以添加更多细节,以帮助其他人了解这如何回答所提出的问题。您可以在帮助中心找到有关撰写良好答案的更多信息。 - Friedrich
我同意@Friedrich的观点...你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。您可以在帮助中心找到有关编写良好答案的更多信息。如果没有更多的解释,我将建议删除您的答案。 - Rich Lysakowski PhD
这怎么可能不清楚,它就是答案,只需要一行代码就能解决这个问题。那么 Santanu Pal 的回答为什么不清楚呢? - Yoko Abi

0
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'))        

我一直收到“QPixmap:必须在QPixmap之前构建QGuiApplication”的错误信息。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接