この記事は、PythonでGUIアプリを作成するための内容となります。
tkinterを用いて、ボタンを押したときに処理を実行させていきます。
本記事の内容
- PythonでGUIアプリの基本画面を作成する
- ボタンをクリックしたときに処理を実行させる
- bind関数のイベント指定(sequence)
それでは、上記に沿って解説していきます。
PythonでGUIアプリの基本画面を作成する
本記事では、tkinterを用いて以下の基本画面を作成できることを前提とします。

作成できない場合は、次の記事をご覧ください。
記事を参考にすれば、上記画面を作成できるようになります。
基本画面を作成できるようになったら、以下を読み進めてください。
ボタンをクリックしたときに処理を実行させる
「ボタンをクリックしたときに処理を実行させる」
このことを専門的に表現すると、次のようになります。
「ボタンのイベントに対してコールバック関数を紐付ける」
これをもっと短くすると、「ボタンに関数をbindする」でしょうかね。
そのbindしているコードを確認しましょう。
import tkinter
def fnc_do_1(event):
print(1)
# 画面作成
window = tkinter.Tk()
window.geometry("400x300")
window.title("ボタンを表示する")
# ボタン作成
btn = tkinter.Button(window, text="ボタン")
# ボタン表示
btn.place(x=125, y=230, width=150, height=40)
# ボタンに関数をbind
btn.bind("<Button-1>", fnc_do_1)
# 画面表示(常駐)
window.mainloop()
ボタンを押すと、「1」が表示するだけのプログラムです。
早速、bindが出てきましたね。
fnc_do_1関数をボタン(btn)にbindをしたことを理解できると思います。
ただ、 <Button-1>が意味不明でしょう。
実は、これがイベントを表しています。
JavaScriptなどで言えば、「click」になります。
ここでbind関数の構文と引数を確認します。
ウィジェット名.bind(sequence, func, add)
以下の3つが引数です。
- sequence:イベント
- func:コールバック関数
- add:値
とりあえず、addは無視しておいてください。
多分、あまり使わないと思います。
sequenceに若干の謎は残りつつも、bindする方法に関しては理解できたはずです。
とりあえず、「ボタンをクリックしたときに処理を実行させる」はこれで終了とします。
以下では、sequence「<Button-1>」の謎を詳しくみていきましょう。
bind関数のイベント(sequence)
イベント(sequence)に指定できるタイプは、以下。
| タイプ(type) | イベント |
| Button | マウスボタンを押す |
| ButtonPress | マウスボタンを押す |
| ButtonRelease | マウスボタンを離す |
| Key | キーを押す |
| KeyPress | キーを押す |
| KeyRelease | キーを離す |
| Motion | マウスを移動 |
| Enter | マウスカーソルが入る |
| Leave | マウスカーソルが出る |
そのまま指定できるのは、Motion、Enter、Leaveぐらいでしょうか。
基本的には、上記の3つ以外は他に指定が必要です。
先ほどの<Button-1>が、まさにそうですね。
左クリックの場合、<Button-1>となります。
中央クリックの場合、<Button-2>となります。
右クリックの場合、<Button-3> となります。
マウスのどのボタンを押したのか?
どのキーを押したのか?
つまり、「どの」を指定する必要があるということです。
このように説明していますが、実際は結構適当な感じです。
Enterキーを押すことは、両方で指定可能です。
- <Key-Return>
- <Return>
個人的には、必ずtypeは先頭につけるようにします。
Enterキーを押すなら、「<Key-Return>」と指定するということです。


