今回は、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()
(実行結果)
実行結果として表示された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()
ボタンをクリックさせるためには、.focus_set() 関数を用いてクリック対象のボタンウィジェットにフォーカスする必要があります。
フォーカスのさせ方についてはコチラの記事で解説しています。
詳しく知りたい方は是非参考にしてみてください~!
[Tkinter] 矢印キーでウィジェットの選択(フォーカス)を変更/移動させる方法!tkinterで作成したGUI上のボタンやテキストボックスに、矢印キーを使ってカーソルを合わせる方法(フォーカスする方法)を分かりやすく解説しています。また、クリックでフォーカスする方法も解説しています。.focus_set(), .bind()...
以上となります。
最後まで見ていただきありがとうございました!
スポンサーリンク
スポンサーリンク