2013-05-07 26 views
22

このコードは動作します:なぜTkinterのイメージが表示されませんか?

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

それは私の画像を示しています。

さて、このコードはコンパイルが、それは私の画像が表示されない、そしてそれはクラスで、同じコードだから、私は、なぜ知らない:

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

の可能性の重複(https://stackoverflow.com/questions/3359717/cannot-display-an-image-in-tkinter)[Tkinterの中に画像を表示することはできません] – Nae

答えて

34

変数photoがローカルでありますクラスがインスタンス化された後にガベージコレクションを取得する変数。例えば、写真への参照を保存します:

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

あなたは「Tkinterのイメージが表示されない」でGoogle検索を行う場合は、最初の結果がこれです:

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

関連する問題