HOME | 12. Tk.Text の使い方 | Python | A-2. Tkinter での日本語の取り扱い | 書き込む |
Tkinter モジュールだけだと貼り付けられるのは GIF, PPM, X bitmap の3種類だけですが、 Python Imaging Library (PIL) を使うとほとんど全ての画像を貼り付けることができます。
X bitmap を使うことはあまりなく、便利なのは GIF でしょう。
[code 1](label_gif.py)
01: #! /usr/bin/env python 02: 03: import Tkinter as Tk 04: 05: CLOCK = 'meza-bl-2.gif' 06: 07: class Frame(Tk.Frame): 08: def __init__(self, master=None): 09: Tk.Frame.__init__(self, master) 10: self.img = Tk.PhotoImage(file=CLOCK) 11: il = Tk.Label(self, image=self.img) 12: il.pack() 13: 14: 15: if __name__ == '__main__': 16: f = Frame() 17: f.pack() 18: f.mainloop()まず、Tk.PhotoImage 関数で、イメージを読み取り、それを、 self.img に代入します。 イメージは、必ずインスタンス変数に代入する必要があります。そうしないと、関数を抜けたとたん変数のメモリーが 回収され、イメージが消えてしまうからです。それに対し、widget は、配置 (pack, grid, place) してしまえば 消えることはないので、それを表す変数は一時的な変数でも差し支えありません。
[code 2](label_png.py)
01: #! /usr/bin/env python 02: 03: import Tkinter as Tk 04: from PIL import Image, ImageTk 05: 06: CLOCK = 'meza-bl-2.png' 07: 08: class Frame(Tk.Frame): 09: def __init__(self, master=None): 10: Tk.Frame.__init__(self, master) 11: image = Image.open(CLOCK) 12: self.img = ImageTk.PhotoImage(image) 13: 14: 15: il = Tk.Label(self, image=self.img) 16: il.pack() 17: 18: 19: if __name__ == '__main__': 20: f = Frame() 21: f.pack() 22: f.mainloop()[code 1], [code 2] ともに右に示す window を表示します。
HOME | 12. Tk.Text の使い方 | Python | A-2. Tkinter での日本語の取り扱い | 書き込む |