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

Tkinter Canvas图片未显示:已创建持久化引用仍无法解决?

Tkinter Canvas图片不显示问题(已添加持久化引用仍失效)

你遇到的核心问题不是图片引用的问题,而是Canvas对象本身被Python垃圾回收机制清理了。

在create_canvas方法中,你创建的canvas是局部变量,当方法执行完毕后,这个局部变量会被销毁。哪怕你已经用self.logo保留了图片的引用,但承载图片的Canvas实例已经不存在了,自然无法显示图片。

修复方案

把Canvas也声明为类的实例属性,让它和AddPasswordWindow实例绑定,避免被垃圾回收:

修改create_canvas方法如下:

def create_canvas(self):
    # 将canvas改为实例属性self.canvas
    self.canvas = Canvas(self.add_window, width=205, height=205)
    self.canvas.create_image(102, 102, image=self.logo)
    self.canvas.grid(column=0, row=0)

额外验证点

  • 确认password_img.png文件路径正确:要么和脚本在同一目录,要么使用绝对路径(比如Image.open("/home/user/password_img.png"))
  • 确保已正确安装Pillow库:执行pip install pillow验证,避免因库未安装导致图片加载失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 11:12:32