¿Cómo soluciono el error “no existe” de la “imagen” pyimage10, y por qué sucede?

Estoy creando una aplicación tkiner y le muestra al usuario una página con información básica y una imagen antes de permitirles hacer clic en un botón para ver los datos de precios de Bitcoin en vivo. Sin embargo, cuando agregué la imagen a la página de ‘inicio’, recibí este error de mi 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 

Creo que estas son las líneas de código que están causando mi error (son las mismas líneas que agregan la imagen a la página de ‘inicio’):

 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) 

También noté que el ícono que configuré no se muestra en la ventana de la GUI cuando se ejecuta el progtwig, solo el ícono de pluma Tkinter predeterminado. Aquí está mi código de configuración de icono si alguien está interesado (aunque estoy bastante seguro de que no está causando mi error):

 tk.Tk.iconbitmap(self, default='main.ico') 

Y sí, para cualquiera que se lo pregunte, importé tkinter como tk, así que ese no es mi error. Si alguien también pudiera decirme por qué ocurre este error, me interesaría mucho: no he visto muchos otros ejemplos de este suceso, y los que he visto no tenían ninguna mención a mi problema de icons. Espero que alguien pueda resolver esto!

No puede cargar un formato .png con tkinter. Usted necesita usar la biblioteca PIL para eso:

 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) 

EDITAR:

Por favor, cree un archivo test.py y ejecute este código EXACTO:

 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() 

Dime si te sale un error o no.

Yo tuve el mismo problema. El problema era importar matplotlib.pyplot en el mismo progtwig o en otro archivo py desde el que importas definiciones. Utiliza Canvas para tus plots.

Al igual que @ joost-broekhuizen, he tenido el mismo problema al usar Tkinter junto con las funciones matplotlib.pyplot. Agregar un ‘maestro’ a la función PhotoImage solucionó el problema por mí.

Código roto (plantea: TclError: la imagen “pyimage10” no existe):

 import matplotlib matplotlib.use("TkAgg") from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import matplotlib.pyplot as plt import Tkinter as tk from PIL import Image, ImageTk fig = plt.figure() root = tk.Tk() image = Image.open("background.png") photo = ImageTk.PhotoImage(image) label = tk.Label(root, image=photo) label.image = image label.pack() root.mainloop() 

¡Agregar ‘master = root’ a PhotoImage resolvió este error!

 photo = ImageTk.PhotoImage(image, master=root)