Tkinterで画像をボタンとして使う方法をわかりやすく解説
Tkinterでは、画像ファイルをそのままボタンとして表示することができます。この記事では、角丸の画像ボタンを作成する方法を、実際のコード例とともに解説します。ここで紹介する手法は、フォーム、ゲーム、ダイアログボックスなど、さまざまなアプリケーションに応用できる汎用的なテクニックです。
画像ボタンの作り方の基本
Tkinterで見栄えの良い角丸ボタンを作る最も簡単な方法は、あらかじめ用意したボタン用の画像を、クリック可能なウィジェットとして配置することです。これを実現するのがPhotoImage()関数で、指定した画像ファイルを読み込んでボタンに渡すことができます。
具体的には、以下の手順で画像をボタン化できます。
まず、クリックイベントを受け取るためのダミーボタンを作成します。
PhotoImage(file)関数を使って、ソースから画像を読み込みます。
読み込んだ画像ファイルをButton関数の引数として渡します。
borderwidth=0 を設定して、ボタンの枠線を消します。
これで、画像がそのままボタンとして機能するようになります。
サンプルコード
それでは、実際に「clickme.png」という画像をクリック可能なボタンにする例を見てみましょう。ボタンがクリックされると、ラベルのテキストが変化する仕組みです。
# 必要なライブラリをインポート
from tkinter import *
# Tkinterのインスタンスを定義
win = Toplevel()
win.title("Rounded Button")
# ウィンドウサイズを定義
win.geometry("700x300")
# ボタンが押されたときの動作を定義
def my_command():
text.config(text="You have clicked Me...")
# PhotoImage関数で画像をインポート
click_btn = PhotoImage(file='clickme.png')
# ボタン用のラベルを作成
img_label = Label(image=click_btn)
# ダミーボタンを作成し、画像を渡す
button = Button(win, image=click_btn, command=my_command,
borderwidth=0)
button.pack(pady=30)
text = Label(win, text="")
text.pack(pady=30)
win.mainloop()
実行結果
上記のコードを実行すると、ウィンドウ内に画像ボタンが表示されます。ボタンをクリックすると、my_command関数が呼び出され、「You have clicked Me...」というメッセージが画面に表示されます。

ポイントまとめ
PhotoImage()はPNGやGIF形式の画像に対応しています(JPEGを使用する場合はPillowライブラリの
ImageTk.PhotoImageを利用しましょう)。borderwidth=0を指定しないと、画像の周りにグレーの枠線が表示されてしまいます。
ホバー時のカーソル変更など、通常のボタンと同じように
commandオプションでイベント処理を組み込めます。
この方法を使えば、デザイン性の高いオリジナルボタンを簡単にTkinterアプリへ組み込むことができます。ぜひ自分のプロジェクトでも試してみてください。
-
Tkinterで画像を背景として使用する方法【初心者向け解説】
Tkinterでフレームのインスタンスを作成し、ウィンドウを表示して実行し続けると、デフォルトの空のキャンバスが表示されます。しかし、PhotoImageクラスとCanvas(またはLabel)ウィジェットのメソッドを組み合わせることで、Tkinterのキャンバス内に画像を背景として表示することが可能です。Tkinterで扱える画像形式について注意点として、Tkinter標準の画像サポートは GIF・PNG・PPM の3形式に限られています。JPEGなどの他の形式を使用したい場合は、Pillow(PIL)ライブラリの ImageTk モジュールを併用する必要があります。PhotoImage 関
-
TkinterのButtonウィジェットでビットマップ画像を使う方法
Tkinterでは、画像を使ってボタンを作成し、自由にカスタマイズすることができます。通常はPythonのPhotoImage(file)関数を使って画像ファイルを読み込みます。ただし、PhotoImage()がサポートしているのはPNG、PPM、GIFなど一部の画像形式のみです。実は、Tkinterには標準で用意されたビットマップ画像をボタンに表示する機能もあります。ビットマップ画像とはビットマップ画像とは、画像の1ピクセルを表すドット(点)が行列状に整列して構成される画像のことです。Tkinterでは、外部ファイルを読み込まなくても、あらかじめ定義された以下のビットマップ属性をそのまま利用