【发布时间】: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 没有。
-
啊,好吧,我从可能的重复帖子中得到了答案,但仍然收到相同的错误消息。