ユーザー入力の検証
Entry を継承するウィジェットは、ユーザー入力を検証する機能を備えています。
ウィジェットが 無効 状態になると、境界線の色が 警告 色に変わります。

この例では、検証タイプは focus です。これは、ウィジェットがフォーカスを取得または喪失するたびに
検証関数が実行されることを意味します。 他にもいくつかの
検証タイプがあり、検証を設定する方法も多数あります。今後の
チュートリアルでこれについて詳しく説明しますが、それまでは、
tcl/tkのドキュメントを参照して、
利用可能な検証機能に関する詳細情報を確認してください。
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
def validate_number(x) -> bool:
"""入力が数値であるかを確認します"""
if x.isdigit():
return True
elif x == "":
return True
else:
return False
def validate_alpha(x) -> bool:
"""入力がアルファベットであるか検証する"""
if x.isdigit():
return False
elif x == "":
return True
else:
return True
# トップレベルウィンドウを作成
root = ttk.Window()
frame = ttk.Frame(root, padding=10)
frame.pack(fill=BOTH, expand=YES)
# 検証コールバックを登録
digit_func = root.register(validate_number)
alpha_func = root.register(validate_alpha)
# 数値入力の検証
ttk.Label(frame, text="数字を入力してください").pack()
num_entry = ttk.Entry(frame, validate="focus", validatecommand=(digit_func, '%P'))
num_entry.pack(padx=10, pady=10, expand=True)
# アルファベット入力の検証
ttk.Label(frame, text="文字を入力してください").pack()
let_entry = ttk.Entry(frame, validate="focus", validatecommand=(alpha_func, '%P'))
let_entry.pack(padx=10, pady=10, expand=True)
root.mainloop()