Tkinterで画像を追加・表示する方法を解説!Pillowとfiledialogの使い方
画像は、あらゆるアプリケーションにおいて非常に有用な要素のひとつです。Pythonでは、Pillow(PIL)パッケージを利用することで、Tkinterアプリケーション内でも簡単に画像を扱うことができます。画像の読み込みや抽出、画像ペインの設定など、便利な機能が多数用意されています。
サンプルコード:ダイアログで選択した画像を表示する
以下の例では、ユーザーがファイルダイアログから画像を選択し、その画像をLabelウィジェットを使ってウィンドウ上に表示します。
#Tkinterライブラリをインポート
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from PIL import Image, ImageTk
#Tkinterフレームのインスタンスを作成
win= Tk()
#ウィンドウサイズを定義
win.geometry("750x350")
win.title("Image Gallery")
def select_file():
path= filedialog.askopenfilename(title="Select an Image", filetype=(('image files','*.jpg'),('all files','*.*')))
img= Image.open(path)
img=ImageTk.PhotoImage(img)
label= Label(win, image= img)
label.image= img
label.pack()
#ラベルとボタンを作成してダイアログを開く
Label(win, text="Click the Button below to select an Image", font=('Caveat 15 bold')).pack(pady=20)
button= ttk.Button(win, text="Select to Open", command= select_file)
button.pack(ipadx=5, pady=15)
win.mainloop()
実行結果
上記のコードを実行すると、画像ファイルを選択するためのボタンが配置されたウィンドウが表示されます。

ボタンをクリックしてローカルディレクトリから任意の画像を選択すると、選択した画像が画面に表示されます。

ポイント解説
1. Pillowのインストール
Pillowが未インストールの場合は、事前に以下のコマンドでインストールしておいてください。
pip install Pillow
2. 画像への参照を保持することが重要
label.image = img のように、PhotoImageオブジェクトへの参照をウィジェット側に保持させることが重要です。この参照がないと、ガベージコレクションによって画像データが破棄され、ウィンドウに何も表示されなくなります。
3. ファイルダイアログの活用
filedialog.askopenfilename() を使えば、OS標準のファイル選択ダイアログを開き、ユーザーに直感的に画像ファイルを選ばせることができます。また、filetype引数を指定することで、ダイアログに表示するファイル形式(拡張子)を絞り込むことも可能です。
-
TkinterのEntryウィジェットにプレースホルダーを追加する方法
Tkinterは、ボタン、テキスト、エントリ(Entry)、ダイアログなどのウィジェットを提供しており、これらを組み合わせることでGUIアプリケーションを効率的に開発できます。しかし、TkinterのEntryウィジェットには、標準ではプレースホルダーの機能が用意されていません。 プレースホルダーとは、入力欄にあらかじめ表示される仮のテキストのことで、「ここに何を入力すればよいか」をユーザーに伝える重要な役割を果たします。 本記事では、insert(挿入位置, テキスト) 関数を使って、Entryウィジェットにプレースホルダーを追加する方法を解説します。この関数は、第1引数に挿入位置(先頭なら
-
PythonのTkinterでボタンに画像を追加する方法【サンプルコード付き】
Pythonの標準GUIライブラリ「Tkinter」には、ボタンなどのウィジェットに画像を追加する機能が備わっています。テキストだけではなくアイコンや画像を表示することで、ユーザーは視覚的なシンボルから操作内容を直感的に把握できるようになり、インターフェース全体の使いやすさが大きく向上します。 本記事では、Pillow(PIL)ライブラリのImageTkモジュールに含まれるPhotoImageクラスを使用し、ローカルに保存した画像ファイルを読み込んでウィジェットに表示する方法を解説します。画像ファイルのパスは、ご自身の環境に合わせて適宜変更してください。 サンプルコード from tkint