如何修复“ image” pyimage10“不存在”错误,为什么会发生?
问题内容:
我正在制作一个更简单的应用程序,它在向用户显示一个包含一些基本信息和图片的页面之前,允许他们单击按钮以查看实时比特币价格数据。但是,当我将图像添加到“启动”页面时,我从IDE中收到以下错误消息:
BTC_img_label = tk.Label(self, image=BTC_img)
File "C:\Python34\lib\tkinter\__init__.py", line 2609, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:\Python34\lib\tkinter\__init__.py", line 2127, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image "pyimage10" doesn't exist
我相信这些是引起我的错误的代码行(它们是将图像添加到“启动”页面的相同行):
BTC_img = tk.PhotoImage(file='bitcoin.png')
BTC_img_label = tk.Label(self, image=BTC_img)
BTC_img_label.image = BTC_img
BTC_img_label.grid(row=2, column=0)
我还注意到,运行该程序时,我设置的图标未显示在GUI窗口中,仅显示默认的Tkinter羽毛图标。如果有人感兴趣,这是我的图标设置代码(尽管我很确定这不会引起我的错误):
tk.Tk.iconbitmap(self, default='main.ico')
是的,对于任何想知道的人,我确实将tkinter导入为tk,所以这不是我的错误。如果有人能告诉我为什么会发生此错误,我将非常感兴趣:我还没有看到很多其他的例子,而且我所看到的都没有提及我的图标问题。希望有人能弄清楚!
问题答案:
您无法使用tkinter加载 .png
格式。您需要为此使用PIL库:
import PIL
image = PIL.Image.open("bitcoin.png")
BTC_img = PIL.ImageTk.PhotoImage(image)
BTC_img_label = tk.Label(self, image=BTC_img)
BTC_img_label.image = BTC_img
BTC_img_label.grid(row=2, column=0)
编辑:
请创建一个test.py
文件并运行以下确切代码:
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
image = Image.open("bitcoin.png")
photo = ImageTk.PhotoImage(image)
label = tk.Label(root, image=photo)
label.image = photo
label.grid(row=2, column=0)
#Start the program
root.mainloop()
告诉我您是否遇到错误。