开始

最近站长参与了深蓝重保项目,在项目中其中一个任务是对惠御平台的攻击告警进行研判与分析。为此我为了简化分析流程、使其数据输出更加直观化,同时为了方便我们更加快速的对ip进行封堵解封操作,我开发了一个py程序用于脚本化执行一些需要频繁手动操作的点。展示如下

image-20240923143612837

回到主题,在我打包好py程序后,又该如何设置应用程序的图标呢?下面有两种方法来达到相似的效果

一、主窗口类 MainWindow

可以在主窗口 MainWindow 类中设置应用程序的图标

self.setWindowIcon(QIcon("favicon.ico"))

image-20240923143954835

实现的效果如下,可以看到程序左上角的图标变为了我们设置的图标

image-20240923144052994

二、setWindowIcon 方法

在程序加载处添加 setWindowIcon 为程序设置图标

window.setWindowIcon(QIcon("favicon.ico"))

image-20240923144332568

三、使用 ctypes

使用 ctypes 并不是为我们设置图标,而是告诉 windows 系统把程序声明为我们自己的应用,这样我们上面设置的 ico 图标才能显示在 windows 的任务栏中。在程序顶部设置如下代码

import ctypes

myappid = "云防助手"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

展示结果如下

image-20240923144822546

如果设置后在 windows 中没有正确展示图标,那么尝试将图标的位置改为绝对位置而不是相对位置

另外在使用 pyinstaller 打包 py 程序时可以使用 -i 参数来为打包的程序设置应用图标

pyinstaller -i favicon.ico yourpy.py

image-20240923145107337

image-20240923145143213

本期文章封面 https://egstar.top/images/723_1.png