Tkinter で Enter キーを関数にバインドする方法
胡金庫
2023年1月30日
このチュートリアルでは、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
は、キーボードイベントのキーシンボルです。上で紹介したように、Enter は Return
です。