You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用PIL调整图片大小时Tkinter报图片不存在错误如何解决?

问题修复方案

错误根源

  • Tkinter 控件无法直接识别 PIL 原生 Image 对象,仅支持传入 ImageTk.PhotoImage 转换后的对象,原代码错误传入了未转换的 limage
  • ImageTk.PhotoImage 对象会被 Python 垃圾回收机制自动清理,需要主动持有对象引用避免丢失
  • 末尾 limage.image() 为无效调用,PIL Image 对象不存在该方法

修正代码

from tkinter import filedialog
# 确保已导入所需依赖
from PIL import Image, ImageTk

path = filedialog.askopenfilename(initialdir="C:\\Users\\josho\\Pictures", title="Choose a photo for your profile.", filetypes=(("png files", "*.png"),("jpg files", "*.jpg"), ("gif files", "*.gif")))
print(path)
limage = Image.open(path)
# Pillow 9.1.0及以上版本ANTIALIAS已废弃,用LANCZOS替代,旧版本可保留Image.ANTIALIAS
image = limage.resize((30,22), Image.Resampling.LANCZOS)
limage2=ImageTk.PhotoImage(image)
Button69.config(image=limage2)
# 主动绑定引用到控件属性,防止图片被垃圾回收
Button69.image = limage2

额外注意事项

  • 如果这段代码写在函数内部,禁止将转换后的ImageTk对象仅存为局部变量,必须绑定到全局变量、类属性或者控件自有属性上才能保证引用不丢失
  • 若运行时提示Resampling不存在,直接将参数改回Image.ANTIALIAS即可

内容的提问来源于stack exchange,提问作者skljjdjncnjcajn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 14:33:02