python - font - ¿Por qué la imagen de Tkinter no aparece si se creó en una función?
label tkinter (1)
Este código funciona:
import tkinter
root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = ''./test.gif'')
canvas.create_image(0, 0, image=photo)
root.mainloop()
Me muestra la imagen.
Ahora, este código se compila pero no me muestra la imagen, y no sé por qué, porque es el mismo código, en una clase:
import tkinter
class Test:
def __init__(self, master):
canvas = tkinter.Canvas(master)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = ''./test.gif'')
canvas.create_image(0, 0, image=photo)
root = tkinter.Tk()
test = Test(root)
root.mainloop()
La photo
variable es una variable local que obtiene la basura recogida después de que se crea una instancia de la clase. Guarde una referencia a la foto, por ejemplo:
self.photo = tkinter.PhotoImage(...)
Si realiza una búsqueda en Google en "tkinter image does not display", el primer resultado es este:
http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm