キャンバスで画像を表示しよう
前回はCanvasウィジェットを使ってビットマップを表示しました。
今回はキャンバス上に画像を表示してみましょう。
画像を読み込む
Canvasウィジェットで画像を表示する前に、PhotoImageクラスで画像を読み込みます。
ただし、PhotoImageクラスが対応している画像形式は、GIF、PGM、PPM、PNGです。
JPEGなど、上記以外の画像形式には対応していません。
他の画像形式を扱うには、Python Imaging Library (PIL)の後継であるPillowを使います。
なお、PIL自体は2010年前後に更新を停止しています。
オブジェクト名 = tkinter.PhotoImage(file="ファイル名")
Canvasウィジェットで画像を表示する
Canvasウィジェットで画像を表示するメソッドは、以下の通りです。
オブジェクト名.create_image(座標, オプション)
座標の意味は、anchorオプションの指定によって異なります。
デフォルトでは表示する画像の中心位置になります。
create_image()のオプション
create_image()の主なオプションは、以下の通りです。
オプション名 | 内容 | |
image | 画像オブジェクト | |
anchor | 画像の位置 | |
center | 画像の中心。デフォルト | |
n | 画像の上端 | |
s | 画像の下端 | |
w | 画像の左端 | |
e | 画像の右端 | |
nw | 画像の左上端 | |
ne | 画像の右上端 | |
sw | 画像の左下端 | |
se | 画像の右下端 |
Canvasウィジェットに画像を表示するプログラム
Canvasウィジェットに画像を表示するプログラムは、以下のようになります。
今回使用した画像のサイズは、301x200ドットになります。
なお、PhotoImageクラスで画像を読み込む前に、必ず tkinter.Tk()で画面を作成する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
### インポート import tkinter ### 画面作成 main = tkinter.Tk() ### 画像読み込み image = tkinter.PhotoImage(file="tkinter24-1.png") ### キャンバス作成 canvas = tkinter.Canvas(master=main, width=640, height=400) ### キャンバス表示 canvas.pack() ### 画像描画 canvas.create_image(320, 200, image=image, anchor="se") canvas.create_image(320, 200, image=image, anchor="sw") canvas.create_image(320, 200, image=image, anchor="ne") canvas.create_image(320, 200, image=image, anchor="nw") ### イベントループ main.mainloop() |
プログラムを実行すると、以下のような画面が表示されます。