【问题标题】:Problems displaying an image on Tkinter在 Tkinter 上显示图像的问题
【发布时间】:2017-11-07 18:43:28
【问题描述】:

我正在使用 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()

但是,这给了我错误:

TclError:图像“pyimage3”不存在

我已经在论坛上搜索了这方面的内容,但只能找到与代码中包含多个 Tk() 实例相关的答案,但我将代码简化为上述代码,但它不起作用。

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

【问题讨论】:

  • 我无法重现此错误(Python 2.7,Pillow 3.4.2)。你用的是什么版本?
  • 我正在使用 Python 3.6 和 Pillow 4.1.1 @ason​​gtoruin 是否值得卸载 Python 3 并改用 Python 2 重试?
  • @Rickson 我确实看过它,但该解决方案似乎不适用于这个问题,因为我的代码中只有一个 Tk() 实例。我尝试按照解决方案的建议将其更改为 TopLevel() 但随后出现错误“模块'tkinter'没有属性'TopLevel'”
  • 更新:令人尴尬的是,我拼错了“Toplevel”。它现在使用此命令工作。对于那个很抱歉。但是,现在会弹出一个多余的第二个窗口 - 我该如何摆脱这个?我知道我可以使用 xyz.withdraw() 方法,但我不知道如何“抓取”这个新窗口,因为我没有创建它并且它没有名称?

标签: python image tkinter python-imaging-library pillow


【解决方案1】:
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)

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

【讨论】:

  • 回答受益于解释,您更改了什么以及更改的原因。这有助于 OP 和其他读者在未来的问题中从中学习。
猜你喜欢
  • 2022-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多