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

求助:Python中使用Tkinter添加图片失败问题排查

Python Tkinter 图片加载失败问题解决

代码里的核心问题

  • 重复导入tkinter模块,完全没必要
  • 错误调用PhotoImage(file=image):image已经是PIL处理好的ImageTk.PhotoImage对象,不能再当作文件路径传给tkinter.PhotoImage
  • 处理好的图片没添加到Canvas上,等于白加载
  • 没保留ImageTk.PhotoImage对象的引用,Python垃圾回收会把它清掉,导致图片不显示

修正后的可用代码

from tkinter import Tk, Canvas
from PIL import Image, ImageTk

root = Tk()

# 加载并调整图片尺寸(确保文件是合法格式,别直接改后缀名)
image = Image.open('Trash.gif')
image = image.resize((20, 20))
tk_image = ImageTk.PhotoImage(image)

canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)
# 把图片放到Canvas的左上角位置
canv.create_image(10, 10, image=tk_image, anchor='nw')

# 必须保留图片引用,不然会被垃圾回收
root.tk_image = tk_image

root.mainloop()

额外要注意的点

  • 图片格式别瞎改:直接把JPEG后缀改成GIF会搞坏文件,原文件是JPEG就直接用Image.open('Trash.jpg'),PIL能自动识别处理
  • Replit环境排查:
    • 确认图片已经上传到项目根目录,看左侧文件列表能找到
    • 要是还是找不到文件,试试用绝对路径:比如Image.open('/home/runner/你的项目名/Trash.gif'),右键文件就能复制路径
    • 检查Replit项目设置,确保图形界面权限是开启的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:10:29