如何在Python 3.11中用Tkinter/CustomTkinter 5.2设置PNG为GUI窗口图标?
解决CustomTkinter窗口设置PNG图标的问题
核心方案:借助Pillow转换PNG格式,配合iconphoto()方法设置
Tkinter原生的iconbitmap()仅支持Windows的.ico格式,要设置PNG图标,需用Pillow处理图片后通过iconphoto()实现,CustomTkinter完全兼容此方法。
安装依赖库
先确保安装Pillow(处理图片格式转换):pip install pillow完整实现代码
替换代码中的your_icon.png为实际图片路径,注意保留图片对象引用避免被垃圾回收:import customtkinter as ctk from PIL import Image, ImageTk # 初始化CustomTkinter环境 ctk.set_appearance_mode("System") ctk.set_default_color_theme("blue") # 创建主窗口 app = ctk.CTk() app.title("PNG Icon Demo") # 加载并转换PNG图片 try: icon_img = Image.open("your_icon.png") tk_icon = ImageTk.PhotoImage(icon_img) # 设置窗口图标 app.iconphoto(True, tk_icon) # 保留引用,防止图片被Python垃圾回收机制清理 app._icon_ref = tk_icon except FileNotFoundError: print("错误:未找到指定的PNG图片文件") app.mainloop()
关键注意事项
- 路径正确性:使用相对路径时,确保PNG文件与脚本在同一目录;或直接使用绝对路径(如
C:/icons/my_icon.png) - 引用保留:必须将
ImageTk.PhotoImage对象赋值给窗口的一个属性(如app._icon_ref),否则对象会被回收,图标无法显示 - 平台适配:
- Windows:上述代码直接生效
- Linux:建议使用尺寸为16x16/32x32/64x64的PNG图片,部分桌面环境对图标尺寸有要求
- macOS:窗口图标可通过此方法设置,但应用dock图标需在打包时额外配置
内容的提问来源于stack exchange,提问作者Pazzo
相关产品推荐
相关产品推荐

