0

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

    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”不存在”。

我已经阅读了很多关于这个问题的答案,但所有这些都是关于做参考,或者使用提升来改变显示顺序。但是,我什至没有超越画布的创建。

请问我错过了什么?

4

1 回答 1

3

看起来您试图通过tk.Tk()再次调用在代码中创建 2 个或更多窗口。这样做的问题是所有变量默认都链接到第一个根窗口,而对第二个窗口不可用。

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

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

photo = ImageTk.PhotoImage(img, master=self.c)
于 2017-07-30T01:39:24.713 回答