Pourquoi l'image Tkinter n'apparaît-elle pas si elle est créée 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()
24
demandé sur
Bryan Oakley
2013-05-07 20:30:03
1 réponses
La variable photo
est une variable locale qui récupère les déchets après l'instanciation de la classe. Enregistrez une référence à la photo, par exemple:
self.photo = tkinter.PhotoImage(...)
Si vous faites une recherche Google sur "Tkinter image doesn't display" , le premier résultat est le suivant:
Http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm
36
répondu
Bryan Oakley
2016-06-25 20:19:11