【问题标题】:"TclError: image", while adding a image to a Label“TclError: image”,同时将图像添加到标签
【发布时间】:2018-12-29 03:34:17
【问题描述】:

我一直在尝试将图像添加到我的 tkinter GUI 中,而谷歌似乎没有给出答案。我知道我不应该在同一个主窗口中使用网格或包几何管理器,据我所知,我还没有,但每次尝试都会导致以下错误消息之一:

TclError: cannot use geometry manager grid inside . which already has slaves managed by pack

或:

TclError: image "pyimage86" doesn't exist

顺便说一句,每次我重新运行我的代码时,“pyimage86”都会发生变化,每次运行都会将数字增加 1,例如“pyimage86”、“pyimage87”等。

第一个错误消息特别令人困惑,因为我正在使用 .grid 将标记的图像放入类中,但错误是不是这样? (示例代码不在一个类中,我知道)

我尝试了不同的图像并将原始图像转换为 .TIF、.JNP、.PNG、.GIF,但没有一个给出结果。我还删除了 Alpha 通道(显然这在使用 ImageTK.PhotoImage 时可能是一个问题,但它没有帮助)。作为最后的尝试,我还将图像转换为灰度图像,但没有运气。

import tkinter as tk          
import PIL.Image
import PIL.ImageTk



root = tk.Tk()

image = Image.open("TemplateRack_GUI.png")
photo = ImageTk.PhotoImage(image)       

label = tk.Label(image=photo)
label.image = photo 
label.grid(row=5, column=5)


root.mainloop()   

【问题讨论】:

  • TclError: image doesn't exist - Tkinter multi-windows python 的可能重复项。其次,您必须保留对图像的引用以防止垃圾收集。
  • 嗨 stovfl,我想我已经保留了以下行的参考 - label.image = photo
  • “我保留了一个参考”:是的,你的 Questions 代码有,链接的 dup 没有。
  • 啊,好吧,我从可能的重复帖子中得到了答案,但仍然收到相同的错误消息。

标签: python image tkinter


【解决方案1】:

你说你的程序有时会给你:

TclError: 不能使用几何管理器网格,其中已经有由包管理的从属。

有时:

TclError:图像“pyimage86”不存在。

我不敢相信!

此外,您还说“我知道我不应该在同一类中使用网格或打包几何管理器”

你说的是哪门课?

Tkinter 文档说:永远不要在同一个 主窗口 中混合网格和打包。 请再次检查您的代码,因为您正在使用某处包和网格。

【讨论】:

  • 我为什么要撒谎?这似乎是对抗性的
猜你喜欢
  • 2014-01-06
  • 2012-03-04
  • 1970-01-01
  • 2012-10-02
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
相关资源
最近更新 更多