Python 在Tkinter上显示图像时出现问题

Python 在Tkinter上显示图像时出现问题,python,image,tkinter,python-imaging-library,pillow,Python,Image,Tkinter,Python Imaging Library,Pillow,我正在使用Tkinter和Python来创建GUI。我不知道如何在tkinter中显示seaborn绘图(另一个问题),因此我试图通过将绘图保存为图像然后显示来避免这一问题 我已尝试使用以下代码显示现有图像: from tkinter import * from PIL import ImageTk, Image window = Tk() load = Image.open('plot.png') render = ImageTk.PhotoImage(load) img = Label

我正在使用Tkinter和Python来创建GUI。我不知道如何在tkinter中显示seaborn绘图(另一个问题),因此我试图通过将绘图保存为图像然后显示来避免这一问题

我已尝试使用以下代码显示现有图像:

from tkinter import *
from PIL import ImageTk, Image

window = Tk()

load = Image.open('plot.png')
render = ImageTk.PhotoImage(load)

img = Label(window, image=render)
img.image = render
img.place(x=0,y=0)

window.mainloop()
但是,这给了我一个错误:

Tcl错误:映像“pyimage3”不存在

我在论坛上搜索过这方面的内容,但只能找到与代码中有几个Tk()实例相关的答案,但我将代码简化为上面的内容,它不起作用

该图像已正确命名,并包含在与Python文件相同的文件夹中。如果我尝试使用JPEG或GIF格式的其他图像,也会出现相同的错误。如果我尝试在一个命令中放入几行,也会出现相同的错误。我安装了枕头

from tkinter import*
from PIL import Image, ImageTk

root = Tk()
f1 = Frame(root,width = 900,height=700,relief=SUNKEN)
f1.pack(side=LEFT)

load = Image.open('mylogo.jpg')
render = ImageTk.PhotoImage(load)
img = Label(image=render)
img.image = render
img.pack(side=TOP)

试试这个代码。这个代码对我有用。谢谢

我无法重现此错误(Python 2.7,Pizzle 3.4.2)。您使用的是什么版本?您看了吗?我正在使用Python 3.6和Pilly 4.1.1@asongtoruin是否值得卸载Python 3并改用Python 2重试?@Rickson我看了一下,但该解决方案似乎不适用于此问题,因为我的代码中只有一个Tk()实例。我尝试按照解决方案的建议将其更改为TopLevel(),但随后出现错误“模块'tkinter'没有'TopLevel'属性”更新:令人尴尬的是,我错写了“TopLevel”。它现在可以使用此命令工作。很抱歉。然而,现在,一个多余的第二个窗口弹出-我如何摆脱这个?我知道我可以使用xyz.draw()方法,但我不知道如何“抓取”这个新窗口,因为我没有创建它,而且它也没有名称?答案可以从解释、更改内容和更改原因中获益。这有助于OP和其他读者从中学习未来的问题。