2013-05-07 7 views
22

Ten kod działa:Dlaczego obraz Tkinter nie jest wyświetlany, jeśli został utworzony w funkcji?

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() 

To pokazuje mi obraz.

Teraz ten kod kompiluje ale nie pokazuje mi zdjęcie, a ja nie wiem dlaczego, bo to ten sam kod, w klasie:

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() 
+0

Możliwy duplikat [Nie można wyświetlić obrazu w Tkinter] (https://stackoverflow.com/questions/3359717/cannot-display-an-image-in-tkinter) – Nae

Odpowiedz

34

Zmienna photo jest lokalnym zmienna, która pobiera śmieci zebrane po utworzeniu klasy. Zapisać odwołanie do fotografii, na przykład:

self.photo = tkinter.PhotoImage(...) 

Jeśli zrobić wyszukiwania Google na „tkinter obraz nie wyświetla się”, pierwszy wynik to:

http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm

Powiązane problemy