Tkinter Entry
Tkinter Entry とは?
ttk.Entry は「テキストボックス」とか「エディットボックス」と言われるウィジェットです。 ユーザーからの文字の入力を受け取ります。
Tkinter Entry のオプション
ttk.Entry ウィジェットの標準オプション
ttk.Entry ウィジェットでは次の標準オプションが利用できます。
- class
- cursor
- style
- takefocus
- xscrollcommand
ttk.Entry ウィジェットの invalidcommand オプション
validatecommand が False を返した場合に実行する関数を指定します。
ttk.Entry ウィジェットの justify オプション
文字の justify を指定します。 left, center, right が指定できます。
ttk.Entry ウィジェットの show オプション
入力時に表示する文字を指定します。通常、パスワード入力の場合の伏字を指定します。
ttk.Entry ウィジェットの state オプション
ウィジェットステートを指定します。 normal, disabled, readonly が指定できます。
ttk.Entry ウィジェットの textvariable オプション
Entry に入力された文字を受け取る変数を指定します。
ttk.Entry ウィジェットの validate オプション
バリデーション (検証) モードを指定します。 none, focus, focusin, focusout, key, all が指定できます。デフォルトは none です。none はバリデーションを行いません。
ttk.Entry ウィジェットの validatecommand オプション
バリデーションを行う関数を指定します。True または False (boolean 値) を返します。空文字の場合は検証は行いません。
False を返した場合、入力を受け付けません。
validatecommand にコールバック関数をセットする方法については「Tkinter Entry の入力検証」をみてください。
ttk.Entry ウィジェットの width オプション
ttk.Entry ウィジェットの width オプションは、Entry ウィジェットの幅を指定します。
Tkinter Entry のスタイル
ttk.Entry のスタイルクラス名は TEntry です。
TLabel では次のオプションが指定できます。
- background : 背景色の設定
- bordercolor
- darkcolor
- fieldbackground
- foreground : 文字色の設定
- insertwidth
- lightcolor
- padding
- relief
- selectbackground
- selectborderwidth
- selectforeground
Tkinter Entry のサンプルコード
ここでは次のような、ログインフォームを作ってみましょう。OK ボタンを押したら、コンソールに入力した文字を出力します。
コードは次のようになります。
from tkinter import *
from tkinter import ttk
root = Tk()
root.title('Entry Test')
root.resizable(False, False)
frame1 = ttk.Frame(root, padding=(32))
frame1.grid()
label1 = ttk.Label(frame1, text='Username', padding=(5, 2))
label1.grid(row=0, column=0, sticky=E)
label2 = ttk.Label(frame1, text='Password', padding=(5, 2))
label2.grid(row=1, column=0, sticky=E)
# Username Entry
username = StringVar()
username_entry = ttk.Entry(
frame1,
textvariable=username,
width=20)
username_entry.grid(row=0, column=1)
# Password Entry
password = StringVar()
password_entry = ttk.Entry(
frame1,
textvariable=password,
width=20,
show='*')
password_entry.grid(row=1, column=1)
frame2 = ttk.Frame(frame1, padding=(0, 5))
frame2.grid(row=2, column=1, sticky=W)
button1 = ttk.Button(
frame2, text='OK',
command=lambda: print("%s,%s" % (username.get(), password.get())))
button1.pack(side=LEFT)
button2 = ttk.Button(frame2, text='Cancel', command=quit)
button2.pack(side=LEFT)
root.mainloop()
Entry に入力された文字は textvariable 属性で指定した変数に関連付けされます。
パスワードのエントリーの時など、伏字にしたい場合は show 属性で伏字で使う文字を指定します。
OK ボタンを押した時の動作は Button の command オプションで指定します。
ここではラムダ式を使って、 print() を実行します。Username の Entry ウィジェットと password の Entry ウィジェットそれぞれに関連付けされた変数、 username と password の内容をプリントしています。
以上、 Tkinter の ttk.Entry ウィジェットの使い方を説明しました。