■
今日作成したのは簡易イメージビューア。gifしか見れないようだ。
#!/usr/bin/env python import Tkinter import tkFileDialog class ImageViewer: def openFile(self): if self.photo: self.canvas.delete(self.photo) self.photoImage = Tkinter.PhotoImage(file=tkFileDialog.askopenfilename()) self.canvas.config(width=self.photoImage.width(),height=self.photoImage.height()) self.photo = self.canvas.create_image(0,0,anchor=Tkinter.NW,image=self.photoImage) def __init__(self): self.window = Tkinter.Tk() self.photo = None self.canvas = Tkinter.Canvas(self.window, bg="white", width=100, height=100) self.canvas.pack() self.btnOpenFile = Tkinter.Button(self.window,text="open",command=self.openFile) self.btnOpenFile.pack() self.window.mainloop() ImageViewer()
画像データはPython/TkinterではPhotoImageというクラスで、 そのコンストラクタで読む画像ファイルを指定しますが、 そのPhotoImageのインスタンスは必ずインスタンス変数(selfがついたの) に保持しないと表示に出てきてくれません。
ここにハマった。関数ローカルの変数に入れると表示されないのな。