Pourquoi ne Tkinter image s'affichent pas si créé dans une fonction?
Ce code fonctionne:
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()
Il me montre l'image.
Maintenant, ce code compile mais il n'affiche pas l'image, et je ne sais pas pourquoi, parce que c'est le même code, dans une classe:
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()
- Double Possible de Impossible d'Afficher une Image dans Tkinter
Vous devez vous connecter pour publier un commentaire.
La variable
photo
est une variable locale qui reçoit les ordures collectées après la classe est instanciée. Enregistrer une référence à la photo, par exemple:Si vous faites une recherche Google sur "tkinter image ne s'affiche pas", le premier résultat est le suivant:
http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm
Juste ajouter
global photo
la première ligne à l'intérieur de la fonction.Test
instance et de première instance perd de son image. Félicitations.