在使用 Tkinter 和 PIL 显示图片时,你可能遇到过 TclError: image 'pyimage2' doesn't exist 的错误。这个错误通常是因为图像对象被垃圾回收器删除了,但 Tkinter 仍然试图引用它。

为了解决这个问题,你可以尝试将图像对象存储为全局变量,以便它不会被删除。在你的代码中,你已经将图像对象存储为全局变量 img_tk,但是仍然可能会出现此错误。这可能是因为 img_tk 没有被正确引用。

尝试将以下代码行更改为:

canvas.create_image(0, 0, anchor='nw', image=img_tk)

anchor 参数从 NW 更改为 'nw',这应该解决问题。如果还有问题,请尝试重新运行程序或使用不同的图像。

代码示例:

from tkinter import *
from PIL import ImageTk, Image

root = Tk()

# 设置窗口大小
root.geometry('600x400')

# 打开背景图并转换为 Tkinter 格式
img = Image.open('数据科学.jpg')
img_tk = ImageTk.PhotoImage(img)  # 存储为全局变量

# 添加图像到 Canvas 组件
canvas = Canvas(root, width=600, height=400)
canvas.pack()
canvas.create_image(0, 0, anchor='nw', image=img_tk)  # 使用全局变量

root.mainloop()

注意:

  • anchor 参数设置为 'nw' 意味着将图像的左上角放置在画布的左上角。
  • 确保你的图片路径是正确的。
  • 如果问题仍然存在,请检查你的代码是否有其他错误。
Tkinter 错误:TclError: image

原文地址: https://www.cveoy.top/t/topic/osg5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录