【Python】TkinterのEntryを使って入力フォームを作成する方法

PythonのGUIライブラリTkinterでEntryウィジェットを使って入力フォームを作成する方法を解説します。

Entryウィジェットの使い方や、Entryウィジェットで入力されたテキストを取得する方法などを詳しく解説しています。入力フォームを作成するための基本的なテクニックを身につけたい人におすすめの記事です。

Entryを使い入力フォームを作成する方法

‘Entry()’を使うことで簡単に入力フォームを作成することが出来ます。

Tkinterを使いウィンドウを作成します。

import tkinter as tk

root = tk.Tk()
root.title('Entry')
root.geometry('300x300')

root.mainloop()

ウィンドウの作成方法に関しては下記の記事でまとめていますのでこちらをご覧ください。

ウィンドウを作成したら、’Entry()’クラスを使いフォームの作成や配置のコードを追加します。

entry = tk.Entry(root, width=20)
entry.pack(pady=10)

Entryの引数に関しては後程紹介します。

以下は、’Entry()’クラスを使いフォームをrootウィンドウ上に表示する例です。

import tkinter as tk

root = tk.Tk()
root.title('Entry')
root.geometry('300x300')

entry = tk.Entry(root, width=20)
entry.pack(pady=10)

root.mainloop()
実行結果

Entry()クラスの引数を覚えよう

‘Entry()’クラスの引数は以下の通りです。

  • ‘master’-このフレームを配置するウィンドウまたはフレームの親要素。
  • ‘width’-ウィジェットの横幅(文字数)。
  • ‘textvariable’-Entryウィジェットに関連付けられた文字列変数。
  • ‘show’-入力された文字を置き換える文字。
  • ‘bg’-背景色。
  • ‘fg’-前景色。
  • ‘font’-フォントの指定。
  • ‘relief’-ウィジェットの枠線のスタイルを指定。
  • ‘borderwidth’-ウィジェットの枠線の幅を指定。

先ほど作成したフォームには引数に親ウィンドウの’root’を指定し、’width’を追加し幅を20文字の長さにしています。

入力されたテキストを受け取る方法

Entryでユーザーから入力された内容を受け取るには、’get()’メソッドを使用します。

例えば、フォームにテキストを入力し、ボタンを押すことでコンソール上に入力した内容をsyつ力する場合は下記コードのようになります。

import tkinter as tk

def get_entry():
    print(entry.get())

root = tk.Tk()
root.title('Entry')
root.geometry('300x300')

entry = tk.Entry(root, width=20)
entry.pack(pady=10)

button = tk.Button(root, text='受け取る', command=get_entry)
button.pack()

root.mainloop()

’get_entry()’関数でEntryに入力された内容を’get()’メソッドを使って取得し、コンソールに出力しています。

入力画面
実行結果

ボタンを押すことでget_entry関数を呼び出し、Entryウィジェットに入力されたテキストを取得して、print文で出力する流れになっています。

‘Button()’のcommandは、ボタンがクリックされたときに、その関数を呼び出すことが出来るのでとても便利です。

先ほどは、コントロール上に入力したテキストを出力したましたが、ウィンドウ上にラベルを使って出力することも可能です。

import tkinter as tk

def get_entry():
    get_text = entry.get()
    label.config(text=get_text)

root = tk.Tk()
root.title('Entry')
root.geometry('300x300')

entry = tk.Entry(root, width=20)
entry.pack(pady=10)

button = tk.Button(root, text='受け取る', command=get_entry)
button.pack()

label = tk.Label(root, text='')
label.pack()

root.mainloop()

空のラベルを作成しておき、ボタンを押すことでget_entry関数を呼び出し、Entryウィジェットに入力されたテキストを一度get_textに格納し、’config()’メソッドを使うことで、空のラベルのパラメータを格納したget_textに変更しています。

get_textには、フォームで入力されたテキストが格納されているので入力されたテキストが表示されるという流れです。

実行結果