Python TkinterウィンドウにJPEG画像を挿入・表示する方法
PythonでGUIアプリケーションを開発する際、画像を扱うにはPillow(PIL)パッケージが便利です。Pillowを使えば、Tkinterアプリケーション内での画像の読み込み、加工、表示が簡単に行えます。
なお、Tkinterが標準でサポートしている画像形式はPPM、PNG、GIFなどです。そのため、JPEGやJPG画像をそのまま表示することはできず、Pillowを介して変換する必要があります。
TkinterのLabelウィジェットは、テキストだけでなく画像を表示する用途にも使えます。画像オブジェクトをimage引数として渡すことで、ウィンドウ上にJPEG画像を表示できるのです。
実装手順
まず、Pillowがインストールされていない場合は、以下のコマンドでインストールしておきましょう。
pip install Pillow
続いて、以下のコードでJPEG画像をTkinterウィンドウに表示します。
サンプルコード
# 必要なライブラリをインポート
from tkinter import *
from PIL import ImageTk, Image
# Tkinterウィンドウのインスタンスを作成
win = Tk()
# ウィンドウのサイズを指定
win.geometry("650x400")
# 表示したい画像のファイル名を変数に格納
path = "file.jpg"
# Pillowで画像を開き、ImageTkオブジェクトに変換
img = ImageTk.PhotoImage(Image.open(path))
# 画像を表示するためのLabelウィジェットを作成
label = Label(win, image=img)
label.pack(fill="both", expand="yes")
# イベントループを開始
win.mainloop()実行結果
このコードを実行すると、Labelウィジェットのimage引数に渡したJPEG画像がウィンドウ全体に表示されます。fill="both"とexpand="yes"を指定しているため、ウィンドウサイズに合わせてラベル領域が拡張されます。
ポイント解説
- ImageTk.PhotoImage:Pillowで開いた画像をTkinterで表示可能な形式に変換するクラスです。これを経由しないとJPEG画像は表示できません。
- 参照の保持:PhotoImageオブジェクトはローカル変数だとガベージコレクションで破棄され、画像が消えることがあります。グローバル変数やインスタンス属性として保持しましょう。
-
Python Tkinterでルートウィンドウを非表示・破棄する2つの方法
Tkinterアプリケーションのテスト中に、デフォルトのウィンドウやフレームを一時的に隠したい、あるいは完全に閉じたいという場面に遭遇することがあります。Tkinterでは、withdraw()メソッドによる「非表示」と、destroy()メソッドによる「破棄」の2つのアプローチが用意されています。mainloop()とウィンドウのライフサイクルmainloop()は、外部イベントによってウィンドウが閉じられるまで、Tkinterアプリケーションを実行し続ける役割を担います。このメインループが動作している間、ウィンドウは画面上に表示され続けます。ウィンドウを完全に破棄(終了)したい場合は、de
-
tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説
tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo