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 ボタンを押したら、コンソールに入力した文字を出力します。

Tkinter GUI window login screen

コードは次のようになります。

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 ウィジェットそれぞれに関連付けされた変数、 usernamepassword の内容をプリントしています。

Tkinter window login screen

以上、 Tkinter の ttk.Entry ウィジェットの使い方を説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門