答案:tkinter中显示图片需用PhotoImage类,原生支持GIF格式;对于JPG、PNG等格式需借助Pillow库的ImageTk.PhotoImage;加载后必须保存引用防止被回收,并可使用Pillow调整大小。
在 Python 的 tkinter 中显示图片,主要使用 PhotoImage 类。但要注意它只支持
GIF 和 PGM/PPM 格式。如果想显示常见的 JPG、PNG 等格式,需要用 Pillow(PIL)库辅助。
1. 显示 GIF 图片(原生支持)
tkinter 原生支持 GIF,可以直接用 PhotoImage 加载:
import tkinter as tk from tkinter import PhotoImageroot = tk.Tk() root.title("显示GIF图片")
注意:路径要正确,且图片必须是 .gif 格式
img = PhotoImage(file="example.gif")
label = tk.Label(root, image=img) label.pack()
保持引用,防止被垃圾回收
root.image = img
root.mainloop()
2. 显示 JPG/PNG 等格式(使用 Pillow)
安装 Pillow:
pip install pillow
然后这样使用:
import tkinter as tk from PIL import Image, ImageTkroot = tk.Tk() root.title("显示JPG/PNG图片")
打开并转换图片
image = Image.open("example.jpg") # 支持 jpg, png, webp 等 photo = ImageTk.PhotoImage(image)
label = tk.Label(root, image=photo) label.pack()
保持引用
root.image = photo
root.mainloop()
3. 调整图片大小
用 Pillow 可以轻松缩放图片:
image = Image.open("example.jpg")
image = image.resize((300, 200)) # 调整为 300x200
photo = ImageTk.PhotoImage(image)
4. 注意事项
- 一定要保存图片对象的引用(如 root.image = photo),否则会被 Python 回收,界面就看不到图了。
- 路径错误或格式不支持会报错,确保文件存在且格式正确。
- 建议统一用 Pillow 的 ImageTk.PhotoImage,兼容性更好。
基本上就这些,不复杂但容易忽略引用问题。








