如何修改Python EasyGUI程序的任务栏图标(PyInstaller打包场景)
解决EasyGUI任务栏图标修改问题
由于EasyGUI基于Tkinter,任务栏显示的是其底层Tkinter窗口的图标,而非你通过PyInstaller设置的exe文件图标。你可以通过直接操作EasyGUI关联的Tkinter根窗口来修改任务栏图标,具体步骤如下:
方法1:直接修改EasyGUI的默认根窗口
在调用任何EasyGUI弹窗函数前,获取它的默认Tkinter根窗口并设置图标:
import easygui # 获取EasyGUI的主Tk窗口实例 root = easygui.root # 设置窗口图标(Windows下使用.ico格式,Linux/macOS可适配.png等格式) root.iconbitmap("custom_icon.ico") # 后续正常调用EasyGUI组件 easygui.msgbox("已替换任务栏图标")
方法2:自定义Tk根窗口并关联EasyGUI
如果上述方法不生效,可手动创建Tk根窗口、设置图标后,让EasyGUI复用该窗口:
import easygui import tkinter as tk import sys import os def get_resource_path(relative_path): """处理打包前后的资源路径兼容""" try: # PyInstaller打包后会生成临时路径,通过sys._MEIPASS访问 base_path = sys._MEIPASS except Exception: # 开发阶段使用当前脚本所在路径 base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) # 创建并隐藏Tk主窗口(EasyGUI会基于此窗口创建弹窗) root = tk.Tk() root.withdraw() # 加载并设置图标 icon_path = get_resource_path("custom_icon.ico") root.iconbitmap(icon_path) # 将自定义窗口关联到EasyGUI easygui.root = root # 测试弹窗 easygui.msgbox("任务栏图标已更新")
打包注意事项
用PyInstaller打包时,需确保图标文件被正确包含:
- Windows平台:使用
pyinstaller --add-data "custom_icon.ico;." your_script.py - Linux/macOS平台:使用
pyinstaller --add-data "custom_icon.ico:." your_script.py
这样打包后,程序运行时就能正确加载自定义图标,替换EasyGUI默认的蓝色羽毛图标。
内容的提问来源于stack exchange,提问作者Austin Turney
相关产品推荐
相关产品推荐

