ImageTk.PhotoImage 给出不存在的消息

ImageTk.PhotoImage gives does not exist message

我正在尝试将图像添加到 canvas。 我从以前的论坛答案中窃取了代码,但它不起作用。

    img = Image.open(filename)
    self.currentImage['data'] = img

    photo = ImageTk.PhotoImage(img)
    label = tk.Label(image=photo)
    label.image = photo

    self.c.xview_moveto(0)
    self.c.yview_moveto(0)
    self.c.create_image(0, 0, image=photo, anchor='nw', tags='img')
    self.c.config(scrollregion=self.c.bbox('all'))
    self.currentImage['photo'] = photo

在 create_image 行生成消息“_tkinter.TclError:图像 "pyimage1" 不存在”。

这个问题我看了很多答案,但都是参考,或者用lift改变显示顺序。 但是,我什至没有通过 canvas.

的创建

请问我错过了什么?

您似乎试图通过再次调用 tk.Tk() 在您的代码中创建 2 个或更多 windows。这样做的问题是默认情况下第一个根 window 的所有变量 link 而对第二个 window 不可用。

正确的解决方法是构建您的代码,以便您有一个用 tk.Tk() 调用的主 window,所有其他 windows 应该以 tk.Toplevel 开头.任何程序都不应多次调用 tk.Tk()

一个快速的 hacky 修复是为 PhotoImage 提供正确的母版:

photo = ImageTk.PhotoImage(img, master=self.c)