【Python/tkinter】Button(ボタン)の使い方

スポンサーリンク
スポンサーリンク

PythonでGUIアプリを作成できるモジュールtkinter(ティーキンター)のButtonの使い方について解説します。

サンプルコードはモジュールのインポートを from tkinter import * としています。
関数を呼び出す際にパッケージ名の接頭辞 (tk.Frame()tk.)を省略できるのでおすすめです。

スポンサーリンク

Buttonとは

Buttonはクリック時の動作を設定できるWidget(ウィジェット)です。
オプションを指定することで、ボタンの装飾や画像表示することが可能です。

Buttonのオプション一覧

Buttonで指定可能なオプション一覧です。

オプション説明値の形式
text表示するテキストを指定文字列
commandボタン押下時のイベント処理関数またはメソッド
bg (background)背景色色名または16進数カラーコード
fg (foreground)文字色色名または16進数カラーコード
widthボタンの幅テキスト単位(ピクセルではない)
heightボタンの高さテキスト単位(ピクセルではない)
fontフォントタイプ・サイズを指定タプル(フォント名, サイズ)
padxボタンの内側に縦方向のスペースを追加ピクセル値
padyボタンの内側に横方向のスペースを追加ピクセル値
anchorテキストを配置する基準位置
デフォルトはCENTER]
(基本)CENTER, N, S, W, E
(組合せ)NW, NE, SW, SE
relief枠線タイプ
(デフォルト値はflat)
flat, solid, groove, raised, ridge, sunken
bd (borderwidth)枠線の幅(デフォルトは2px)
relief とセットで設定
ピクセル値
cursorマウスオーバー時のカーソルタイプカーソルタイプ
justifyテキストが複数行にわたる場合の配置位置LEFT, CENTER, RIGHT
textvariable文字列を動的に変化させる場合に使用StringVarクラスのインスタンスを指定
image表示する画像を指定PhotoImageオブジェクト
stateボタンの状態を設定NORMAL, DISABLED
repeatdelay長押しクリックの判定秒数ミリ秒
repeatinterval長押し時の動作間隔ミリ秒

テキスト表示(text)

ボタンのテキストを表示するにはtextで文字列を指定します。

このコードだけではボタンをクリックしてもイベントは発生しません。

イベントを発生させるには次に説明するcommandオプションを設定します。

イベント処理(command)

ボタン押下時にイベントを発生させるにはcommandオプションで関数やメソッドを指定します。

下の例では、ボタンをクリックした時にテキストを変更する処理を設定しています。

command=click_btn を設定することで、クリック時に関数click_btnを呼び出してボタンのテキストを変更しています。

引数を渡して関数を呼び出す(command=lambda:)

ボタン押下時に発生させる関数に引数を指定したい場合は、lambda式を使用する必要があります。

以下の例では、ボタンを押した時にそれぞれのボタンに応じた引数を渡してメッセージを表示しています。

背景色(bg)

背景色を設定するには、bgbackground)を指定します。
値は色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典

文字色(fg)

文字色を設定するには、fgforeground)を指定します。
値は色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典

幅・高さ(width, height)

ボタンの幅と高さは文字列に合わせて自動で伸縮しますが、width, heightでサイズを指定することができます。

フォント指定(font)

フォントの種類とサイズを変更するにはfontをタプル(フォント名, サイズ)で指定します。

ボタン内部にスペースを追加(padx, pady)

padx, padyでラベルの枠とテキストの間にスペースを追加します。
weight, height に似ていますが、こちらではテキストの内容に応じて一定のスペースを確保できます。

配置の基準位置(anchor)

ラベル文字の基準位置をanchorで指定します。

上下左右=北南西東として頭文字の記号の組み合わせで指定します。
値は、上=N, 下=S,  右=E, 左=W となります。

記号と位置関係は下図のようになります。

枠線(relief, bd)

reliefでラベルの枠線を設定します。
線の太さを変更したい場合はbdを指定します。デフォルトは2pxです。

sunkenはボタンを押した時に変化が無いため押したことが分かりにくくなります。

カーソル(cursor)

cursorを指定するとマウスオーバーした時のカーソルタイプを変更できます。

カーソルのタイプは全部で75個ありますが、実際に使えそうなものは限られています。
以下がサンプルになります。全タイプを確認したい場合はこちらのサイトで確認できます。

カーソルオプション
arrow
center_ptr
circle
crosshair
draft_large
draft_small
left_ptr
hand1
hand2
tcross
top_left_arrow
X_cursor

複数行の配置位置(justify)

ボタンの文字列が複数行の場合にjustifyで寄せ方向を指定できます。
設定値はLEFT, CENTER, RIGHTで、デフォルトはCENTERです。

文字列を動的に変更(textvariable)

textvariableを指定することで、ボタンに表示する文字列を動的に変化させることができます。
設定値は、StringVarクラスのインスタンスを参照する変数を指定します。

画像表示(image)

ボタンにはテキストだけでなく画像を表示することもできます。

画像ファイルをPhotoImageオブジェクトとして読み込みimageに設定します。

ボタンの状態設定(state)

stateでボタンのクリック可否を設定できます。

特定の処理をした後に、ボタンを有効にしたい場合などに活用できます。
以下の例ではボタンのクリックで、クリック可否を切り替えています。

長押し時の繰り返し設定(repeatdelay, repeatinterval)

ボタンを長押しした時にイベント処理を連続して動作させたい場合に設定します。

repeatdelayで長押しとして判定する秒数を設定して、repeatintervalでイベント処理の動作間隔の秒数をミリ秒で設定します。

以下の例では、ボタンを0.1秒以上長押しするとbtn_click関数が動作して、その後長押しを続けると1秒間隔で関数が動作します。


以上でButtonの使い方の解説は終了です。

以下の記事も参考にしてみて下さい。
・関連記事:PythonでGUIアプリを作成する(tkinter)
・関連記事:【Python/tkinter】Label(ラベル)の使い方
・関連記事:【Python/tkinter】Entry(エントリー)の使い方
・関連記事:【Python/tkinter】Canvas(キャンバス)の使い方