pil photoimage jpg imagetk python image tkinter

python - photoimage - ¿Cómo agregar una imagen a un widget? ¿Por qué no se muestra la imagen?



tkinter label (1)

Su imagen se está acumulando cuando intenta usarla en la primera versión.

effbot es antiguo, pero aquí hay un buen fragmento :

Debe mantener una referencia al objeto de imagen en su programa de Python, ya sea almacenándolo en una variable global o adjuntándolo a otro objeto.

En la segunda versión, la imagen se declara a nivel global.

Aquí hay otro ejemplo que demostraría este problema, que también esperaría que funcione, después de todo, es el mismo código solo en una función

No funciona:

import tkinter as tk from PIL import ImageTk root = tk.Tk() def make_button(): b = tk.Button(root) image = ImageTk.PhotoImage(file="1.png") b.config(image=image) b.pack() make_button() root.mainloop()

Funciona:

import tkiner as tk from PIL import ImageTk root = tk.Tk() def make_button(): b = tk.Button(root) image = ImageTk.PhotoImage(file="1.png") b.config(image=image) b.image = image b.pack() make_button() root.mainloop()

¿Por qué? Las variables en make_button son locales para esa función. La misma idea si te encuentras con este tipo de problema dentro de una clase.

¿Cómo puedo agregar una imagen a un widget en tkinter?

¿Por qué cuando uso este código no funciona?

some_widget.config(image=PhotoImage(file="test.png"), compound=RIGHT)

pero esto funciona ?:

an_image=PhotoImage(file="test.png") some_widget.config(image=anImage, compound=RIGHT)