Python

[Python/Tkinter] Enterキーで処理を実行する方法(Enter入力を取得)

今回は、Tkinter上に作成したテキストボックスに入力した内容を “Enter” キーのクリックで表示させる方法を解説していきます!

Enterキーで処理を実行させる方法

Enter入力とウィジェットを紐づける

キーボード入力とTkinter上のウィジェットを紐づけるためには、.bind() メソッドを使用します。

Enterキーを紐づける場合はイベントに <Return> を指定します。

ウィジェット名.bind("<Return>", 関数名)

入力内容をEnterキーで表示させてみる

では、実際にEntry boxに入力した内容をEnterキーで表示させてみます。

Entry box内に入力した内容を取得する方法は .get() メソッドを使用します。

import tkinter as tk


class FOCUS_WIDGET():
    def __init__(self):
        self.num = 0
        self.button_num = 5
        self.widget_list = []
    
    def gen_window(self):
        root=tk.Tk()
        root.geometry("400x200")
        root.title("Python")
        #ウィジェット作成
        self.entry = tk.Entry(root)
        #Enterキーとボタンクリックイベントをバインド
        self.entry.bind("<Return>", self.press_key)
        #ウィジェット配置
        self.entry.pack()

        root.mainloop()
        
    def press_key(self, event):
        #入力内容を表示
        print(self.entry.get())

ins = FOCUS_WIDGET()
ins.gen_window()

(実行結果)

result of enter2

実行結果として表示されたEntry box内に何か文字を入力して、Enterキーをクリックしてみてください!

入力内容がコンソール上に表示されたと思います!

Enterキーでボタンをクリックする方法

Entry box内の入力内容を読み取る他にも、Enterキーでボタンをクリックすることもできます。

今回は矢印キーで任意のボタンを指定し、指定したボタン名を Enterキー がクリックされた際に表示させるプログラムを書いてみます。

import tkinter as tk


class FOCUS_WIDGET():
    def __init__(self):
        self.num = 0
        self.button_num = 3
        self.widget_list = []
    
    def gen_window(self):
        root=tk.Tk()
        root.geometry("400x200")
        root.title("Python")
        for i in range(self.button_num):
            #ボタンウィジェット作成
            button=tk.Button(root,text="ボタン%s" %i)
            #ボタンとキーをバインド
            button.bind("<KeyPress>", self.press_key)
            #ボタンとクリックイベントをバインド
            button.bind("<ButtonPress>", self.click_button)
            #Enterキーとボタンクリックイベントをバインド
            button.bind("<Return>", self.press_key)
            #ボタンウィジェット配置
            button.pack()
            #リストに格納
            self.widget_list.append(button)
        #フォーカスの初期位置を指定
        self.widget_list[0].focus_set()
        root.mainloop()
        
    def press_key(self, event):
        # 上下キーで要素番号を変動
        if event.keysym == "Up":
           self.num = self.num - 1 
        elif event.keysym == "Down":
           self.num = self.num + 1
        elif event.keysym == "Return":
           print(event.widget.cget("text"))
        # 指定要素へフォーカスを切り替え
        self.widget_list[self.num].focus_set()

    def click_button(self, event):
        button_text = event.widget.cget("text")
        self.num = int(button_text[-1])
        self.widget_list[int(button_text[-1])].focus_set()

ins = FOCUS_WIDGET()
ins.gen_window()

result of enter3

ボタンをクリックさせるためには、.focus_set() 関数を用いてクリック対象のボタンウィジェットにフォーカスする必要があります。

フォーカスのさせ方についてはコチラの記事で解説しています。
詳しく知りたい方は是非参考にしてみてください~!

[Tkinter] 矢印キーでウィジェットの選択(フォーカス)を変更/移動させる方法!tkinterで作成したGUI上のボタンやテキストボックスに、矢印キーを使ってカーソルを合わせる方法(フォーカスする方法)を分かりやすく解説しています。また、クリックでフォーカスする方法も解説しています。.focus_set(), .bind()...

以上となります。
最後まで見ていただきありがとうございました!