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

Python Tkinter Canvas使用PhotoImage加载图片不显示呈空白画布

问题根因

你的代码有两个直接导致渲染异常的问题:

  • 创建Canvas组件后未调用任何布局方法(pack/grid/place)将其挂载到主窗口,画布本身没有被加入窗口渲染树,自然无法显示任何内容。
  • Tkinter 原生PhotoImage对象存在垃圾回收机制的坑:如果对象没有被持久持有引用,会被Python自动回收,哪怕已经通过create_image绑定到画布,回收后也只会显示空白。

另外你导入的time模块全程未使用,手动调用的canvas.update()在组件未挂载的状态下没有实际作用,属于冗余代码。

修复后可运行代码
from tkinter import *

HEIGHT = 500
WIDTH = 500

window = Tk()
canvas = Canvas(window, height=HEIGHT, width=WIDTH)
# 将Canvas通过pack布局挂载到主窗口
canvas.pack()

photo_Image = PhotoImage(file='C:\\Users\\figue\\OneDrive\\Escritorio\\gatito.png')
# 将图片对象绑定为canvas的属性,持久持有引用避免被垃圾回收
canvas.image = photo_Image
canvas.create_image(0, 0, image=photo_Image, anchor=NW)

window.mainloop()
补充说明
  • 如果你后续要加载JPG格式的图片,原生PhotoImage不支持该格式,需要借助PIL库的ImageTk.PhotoImage完成加载,当前你使用的PNG格式不需要额外依赖。
  • 图片路径建议使用原始字符串写法,比如r'C:\Users\figue\OneDrive\Escritorio\gatito.png',可以避免双反斜杠转义写错导致的路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:33:24