Python Tkinter设置GUI窗口logo时无法识别logo.jpg图片数据报错
报错原因
Tkinter 内置的 PhotoImage 原生仅支持 GIF、PNG、PPM、PGM 这几种图片格式,不支持JPG/JPEG格式解析,直接读取.jpg文件就会触发couldn't recognize data in image file的报错。
解决方法
可根据实际需求二选一:
方法一:转换图片格式(无需额外安装依赖)
直接用系统自带画图工具、图片编辑软件,把logo.jpg另存为PNG/GIF格式,修改代码中对应的文件名即可,可直接运行的示例代码:from tkinter import * window = Tk() window.geometry("420x420") window.title("Backrooms in A Nutshell") # 读取转换后的PNG格式logo icon = PhotoImage(file='logo.png') window.iconphoto(True, icon) window.mainloop()方法二:借助Pillow库直接加载JPG文件
如果不想转换图片格式,安装Python图像处理库Pillow即可实现JPG格式的读取。
第一步先安装Pillow,在终端执行命令:pip install pillow第二步修改代码,用Pillow加载图片后转换为Tkinter可识别的对象:
from tkinter import * from PIL import Image, ImageTk window = Tk() window.geometry("420x420") window.title("Backrooms in A Nutshell") # 加载JPG格式logo img = Image.open('logo.jpg') icon = ImageTk.PhotoImage(img) window.iconphoto(True, icon) window.mainloop()
注意:如果把
icon对象定义在局部函数内,要保留对该对象的全局引用,避免被Python垃圾回收机制回收导致窗口图标不显示。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

