HOWTO · Tkinter
Tkinter で Enter キーを関数にバインドする方法
このチュートリアルでは、Enter キーを Tkinter の関数にバインドする方法を示します。
このチュートリアルでは、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 です。
