Tkinter で Enter キーを関数にバインドする方法

  1. イベントを関数にバインドする
  2. キープレスを関数にバインドする
  3. クラスメソッドのキープレスに関数をバインドする例

このチュートリアルでは、Tkinter で Enter キーを関数にバインドする方法を紹介します。

イベントを関数にバインドする

Enter キーを押すことは、ボタンのクリックなどのイベントであり、このイベントに関数またはメソッドをバインドして、指定した関数をイベントにトリガーさせることができます。

widget.bind(event, handler)

event 発生した場合、handler が自動的にトリガーされます。

キープレスを関数にバインドする

import tkinter as tk

app = tk.Tk()
app.geometry("200x100")

def callback(event):
    label["text"] = "You pressed Enter"

app.bind('<Return>', callback)

label = tk.Label(app, text="")
label.pack()

app.mainloop()
def callback(event):
    label["text"] = "You pressed Enter"

event は関数に渡される隠れた引数です。関数の入力引数で指定しない場合、TypeError が発生します。

app.bind('<Return>', callback)

callback 関数を <Return> イベント、つまり Enter キーを押すイベントにバインドします。

クラスメソッドのキープレスに関数をバインドする例

import tkinter as tk

class app(tk.Frame):
    def __init__(self):
        self.root = tk.Tk()
        self.root.geometry("300x200")
        self.label = tk.Label(self.root, text="")
        self.label.pack()
        self.root.bind('<Return>', self.callback)
        self.root.mainloop()

    def callback(self, event):
        self.label["text"] = "You pressed {}".format(event.keysym)
    
app()

このクラスの実装は、上記のメソッドに似ています。

event オブジェクトの keysym 属性を表示されたラベルに配置します。

keysym は、キーボードイベントのキーシンボルです。上で紹介したように、EnterReturn です。

Tkinter は Enter キーを関数にバインドします

comments powered by Disqus