Python tkinter con canvas no muestra imágenes.
Tengo problemas con “tkinter” y “canvas” cuando recuperar imágenes de la base de datos y renderizar todas las imágenes no se muestran. Al depurar el código, todas las imágenes se muestran normalmente, pero al ejecutar el código las imágenes no se muestran en el canvas.
count = 0
posx = 1
posy = 5
for imagem in self.imagens:
img1 = Image.open(imagem[2])
img1 = img1.resize((200, 200), Image.ANTIALIAS)
photoImage = ImageTk.PhotoImage(img1)
self.canvas.create_image(posy, posx, anchor=NW, image=photoImage)
count = count + 1
if count == 9:
break
if count == 0 or count == 3 or count == 6:
posy = 5
elif count == 1 or count == 4 or count == 7:
posy = 210
elif count == 2 or count == 5 or count == 8:
posy = 415
if count > 2 and count < 5:
posx = 205
elif count > 5 and count < 8:
posx = 410
davy.ai
Parece que el problema podría estar relacionado con el alcance del objeto PhotoImage. Al crear un objeto PhotoImage en tkinter, debe asignarse a una variable con alcance global, de lo contrario, puede ser recolectado por el recolector de basura y no aparecer en el lienzo.
Una solución para esto podría ser almacenar todos los objetos PhotoImage en una lista con alcance global y referirse a esa lista al crear imágenes en el lienzo. Por ejemplo:
Otra cosa a comprobar es si las imágenes se están recuperando correctamente de la base de datos, se puede comprobar imprimiendo los nombres de los archivos de imagen o verificando si existen en el sistema de archivos.
Además, si el lienzo no se está actualizando o dibujando correctamente, es posible que deba llamar los métodos
update()
oupdate_idletasks()
en el lienzo después de crear las imágenes.¡Espero que esto ayude!