【发布时间】:2020-11-04 01:25:07
【问题描述】:
我只想在我的 GUI 中显示一个徽标或图像。我尝试了互联网上发布的不同技术,但似乎都给了我一个错误TclError: image "pyimage27" doesn't exist。我检查了文件是否正确(png 文件)和路径。我仍然无法显示图像。下面是我的简单代码:
import tkinter as tk
root = tk.Tk()
def show_image():
img_label = tk.Label(root)
img_label.image = tk.PhotoImage(file="logo.png")
img_label['image'] = img_label.image
img_label.pack()
show_image()
root.mainloop()
我得到的错误
File "C:\Users\bb\Documents
\line.py", line 54, in <module>
alien()
File "C:\Users\bb\Documents
\test.py\line.py", line 26, in __init__
self.alien2 = self.canvas.create_image((100,100),image=CardVar,anchor=CENTER)
File "C:\Users\bb\Anaconda3\lib\tkinter\__init__.py", line 2489, in create_image
return self._create('image', args, kw)
File "C:\Users\bb\Anaconda3\lib\tkinter\__init__.py", line 2480, in _create
*(args + self._options(cnf, kw))))
TclError: image "pyimage30" doesn't exist
谢谢
有许多类似的答案可用,但没有帮助:
【问题讨论】:
-
您的简化代码在运行时是否实际产生错误?我怀疑你的真实代码不止一次调用
Tk(),这是可能导致的众多问题之一。 -
显示的错误来自
create_image(),但您的代码没有这样的语句。 -
是的,你说得对。我的主要代码对 Tk() 有更多的调用,它给了我错误。解决办法是什么?
-
一般来说,您应该只调用一次
Tk()。避免这种情况仅取决于您要做什么(我们无法从您问题中的示例代码中看出这一点)。 -
您必须使用
Toplevel()来创建额外的窗口。Tk()不仅仅是创建一个窗口——它创建了实现 GUI 的整个 Tcl/Tk 环境,窗口只是一个不可避免的副作用。如果您多次调用它,您可能会遇到这样的情况,例如图像存在于一个环境中,而一个小部件想要使用该图像存在于另一个环境中。
标签: python user-interface tkinter