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

Posted

技术标签:

【中文标题】如何使用 PyQt5 设置窗口图标?【英文标题】:How to set a window icon with PyQt5? 【发布时间】:2017-03-04 23:46:47 【问题描述】:
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)。

我做错了什么?

【问题讨论】:

使用绝对路径。 谢谢,但它不起作用。我尝试使用 self.setWindowIcon(QtGui.QIcon('C:/Users/John/PycharmProjects/pythonproject/icon.png'))。另外,我必须在导入中添加 QtGui 才能获得 QIcon。我什至不确定这是否是使用 PyQt5 的好方法。 哦,我发现我的错误了,我以为我的图标是黑底白字,但实际上它是透明底白字。 self.setWindowIcon(QtGui.QIcon('icon.png')) 一切正常。我的错,非常感谢你的帮助 ekhumoro! 【参考方案1】:

asker 建议的命令对我有用:

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

我放了 256x256 png,一切正常。我有 Win 7 pro 64 位,Python 3.5.2 32 位。

【讨论】:

【参考方案2】:

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

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

【讨论】:

这是唯一对我有用的东西!非常感谢!!!【参考方案3】:

我正在使用 PyQT5。并且代码应该是...

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

【讨论】:

【参考方案4】:
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'))        

【讨论】:

以上是关于如何使用 PyQt5 设置窗口图标?的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5:如何从系统托盘图标上下文菜单启动窗口?

PyQt5快速上手基础篇3-设置窗口标题和图标

如何在python中使用pyqt5将QSlider添加到主窗口的工具栏

PyQt5应用与实践

如何在 PyQt5 中相对于父窗口移动子窗口?

如何使小部件随 PyQt5 中的窗口缩放?