【问题标题】:Exception has occurred: TclError发生异常:TclError
【发布时间】:2021-09-18 06:04:10
【问题描述】:

我想显示图像并根据标签大小设置图像大小。

img = Image.open("filepath")
img = img.resize((34, 26), Image.ANTIALIAS)


Label(master, image=img).place(x=20,y=10,width=80,height=80)

但是出现此错误消息。

Exception has occurred: TclError
image "<PIL.Image.Image image mode=RGBA size=34x26 at 0x20B9C0199D0>" doesn't exist

【问题讨论】:

  • 你需要保存图片并用ImageTk.PhotoImage(file=...)打开它
  • 您需要先将图像转换为PIL.ImageTk.PhotoImage 对象。查看here 了解更多信息。
  • @Sujay 保存然后打开它是浪费时间。您可以直接将PIL.Image.Image 对象作为第一个参数传递给PIL.ImageTk.PhotoImage(...)
  • 我对实现还是一头雾水,能否给我看看正确的代码示例。

标签: python image tkinter


【解决方案1】:

试试这个:

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()

img = Image.open("cards.png")
img = img.resize((34, 26), Image.ANTIALIAS)
tk_img = ImageTk.PhotoImage(img)

label = tk.Label(root, image=tk_img)
label.pack()

root.mainloop()

您的所有代码都是正确的,但为了将其传递给tkinter,您需要使用tk_img = ImageTk.PhotoImage(img) 将其转换为ImageTk.PhotoImage 对象

【讨论】:

  • @gdf14 另外请记住,png 图像可以直接用tk.PhotoImage 显示,而不是使用PIL,但这意味着你必须保存图像(不能用于这个案例)。只是对未来的提示。
猜你喜欢
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 2021-05-06
相关资源
最近更新 更多