tkinter.(ttk.)Entry【単一行エディットボックス ウィジェット】

メモ  (  作成 編集テキスト 入力検証 パスワード文字  )  オプション メソッド  (  オプション設定 検証処理  )

メモ

Entryのサンプル画像


オプション

メモ〔

オプション 一覧

個別tkttk説明
exportselectionXセレクション
True・YES 等の定数:有効
False・NO 等の定数:無効
state Config 状態 (tk 互換用 ttk(stateflags)【状態フラグ】を上書き)
NORMAL【通常状態】
DISABLED【無効状態】
・'readonly'【読み取り専用状態】
(stateflags)state( )
詳細
状態フラグ (組合せ:state【状態】の変更なし)
(なし):通常状態
・'disabled':無効状態
・'focus':フォーカスあり状態
・'readonly':読み込み専用状態
xscrollcommand水平方向のスクロール発生時の呼び出し関数
(関連スクロールバーの操作等の処理)
テキストtkttk説明
fontConfigフォント (tkinter.Font)
showConfigパスワード文字
textvariableConfig テキスト用ウィジェット変数
検証処理tkttk説明
invalidcommand
invcmd
Config
検証NG処理関数
validatecommand【検証処理】が False【無効】を返却した場合の処理 〔検証処理詳細
(デフォルト { }:無効)
validate Config 検証モード (検証処理はvalidatecommand【検証処理】に指定)〔検証処理詳細
'none'【検証なし】
・'focus'【フォーカス検証】:フォーカス取得 と フォーカス喪失 で検証
・'focusin'【フォーカスイン検証】:フォーカス取得 で検証
・'focusout'【フォーカスアウト検証】:フォーカス喪失 で検証
・'key'【キー検証】:編集されると検証
・'all'【全て検証】:上記の全ての検証
validatecommand
vcmd
Config
検証処理関数〔検証処理詳細
(デフォルト { }:無効)
サイズ・配置tkttk説明
widthConfig幅 (文字数 / 0以下:自動計算)
justifyConfig テキスト等の配置位置
LEFT【左端寄せ】
CENTER【中央寄せ】
RIGHT【右端寄せ】
padding内部間隔のリスト
(左端・上端・右端・下端の順)
外観tkttk説明
borderwidth (bd)境界線の幅
reliefStyle外観
色 関連tkttk説明
background (bg)Style 背景色 tk
Style fieldbackground【入力域の背景色】の別名 (macOS のみ)
foreground (fg)● (―)前景色
darkcolorStyle 入力域の枠の (入力中以外)
fieldbackgroundStyle 入力域の背景色
lightcolorStyle 入力域の枠の (入力中)
disabledbackgroundStyle.map()
[background]
無効状態の背景色
(空文字列:通常の背景色)
disabledforegroundStyle.map()
[foreground]
無効状態の前景色
(空文字列:通常の前景色)
bordercolorStyle 外枠の
highlightbackgroundStyle 外枠の (入力フォーカスなし)
highlightcolorStyle 外枠の (入力フォーカスあり)
highlightthicknessStyle 外枠の幅 (入力フォーカス用)
readonlybackground Style.map()
[background]
読み取り専用状態の背景色
(空文字列:通常の背景色)
(readonlyforeground) Style.map()
[foreground]
読み取り専用状態の前景色
(空文字列:通常の背景色)
selectbackgroundStyle選択範囲の背景色
selectborderwidthStyle選択範囲の枠幅 (ピクセル単位 等)
selectforegroundStyle選択範囲の前景色
挿入カーソル 関連tkttk説明
insertbackground挿入カーソルの背景色
insertborderwidth挿入カーソルの枠の幅 (ピクセル単位 等)
insertofftime挿入カーソルの点滅のオフ時間 (ミリ秒 / 0:点滅なし)
insertontime挿入カーソルの点滅のオン時間 (ミリ秒)
insertwidthStyle挿入カーソルの全体幅 (ピクセル単位 等)
共通tkttk説明
class_クラス名
cursorConfigマウスカーソル名
nameインスタンス名 (省略:自動命名)
先頭は小文字・ドットは不可 / フルパスで一意
インスタンス識別
styleConfigスタイル名 (TEntry)
takefocusConfig[Tab]キー等でのフォーカス移動の有無〔フォーカス
'' (空文字列):自動設定
False:なし (スキップ)
True:あり (タブストップ)
凡例
●:各種方法で指定可能
○:コンストラクタでのみ指定可能
▲:config( ) 等でのみ指定可能
Config:コンストラクタ 及び config( ) 等で指定可能
Style:Style でのみ指定可能
Method:メソッドの引数で指定
Default:デフォルト値
:テーマ依存

動的外観変更

style.map (スタイル名, 対象 = [(状態, 状態の値)])

対象状態オプション備考
background
【背景色】
disabled【無効状態】disabledbackground 環境依存
focus【フォーカスあり状態】
readonly【読み取り専用状態】readonlybackground 環境依存
foreground
【前景色】
disabled【無効状態】disabledforeground
focus【フォーカスあり状態】
readonly【読み取り専用状態】(readonlyforeground)

色の詳細

説明
'色名'色名:'red'・'green'・'blue'・'gray0'~'gray100'・'system~' 等
下記参照
Tcl8.6/Tk8.6 - Tk Commands - colors
(同名色でも HTML5:カラー定義 と定義に差異あり)
'#RGB'16進 4ビット
'#RRGGBB'16進 8ビット
'#RRRGGGBBB'16進 12ビット
'#RRRRGGGGBBBB'16進 16ビット

マウスカーソル名の詳細 ( cursor )

マウスカーソル名説明
'マウスカーソル名'下記参照 ('arrow'・'wait' 等)
Tcl8.6/Tk8.6 - Tk Commands - cursors (英語)
Tkinter 8.5 reference: a GUI for Python - Cursors (英語)

外観の詳細 ( relief )

外観説明
FLATフラット
GROOVE凹み枠
RAISED隆起 (凸)
RIDGE隆起枠 (凸枠)
SOLID実線
SUNKEN凹み

検証処理詳細〕  ( validatevalidatecommandinvalidcommand )  

置換コード備考
%dアクションコード
削除:0
挿入:1
その他:-1
%i挿入・削除の開始テキストインデックス
その他:-1
%P変更後のテキスト (予定)
%s変更前のテキスト
%S挿入・削除されるテキスト
%vvalidate【検証モード】オプションの値
%V呼び出し理由 ( 'focusin'・'focusout'・'key'・'forced' )
%W インスタンス名 (フルパス)
name【インスタンス名】

メソッド

コンストラクタ備考
Entry(master=None, cnf={ }, **kw)
ttk.Entry(master=None, **kw)
コンストラクタ
master親 (tkinter.Tk【トップレベルウィンドウ】・コンテナウィジェット)
cnf (辞書型引数)辞書型のオプション
kw (キーワード引数)オプション (複数可)
固有メソッド備考
bbox(index) ttk 文字枠情報 取得
戻り値文字枠情報のタプル (下記参照)
index文字インデックス (0~)
文字枠情報:次のタプル (ピクセル単位)
(左上隅のx座標, 左上隅のy座標 , 文字の幅, 文字の高さ)
delete(first, last=None) 指定位置の文字列削除
戻り値空文字列
first最初の文字インデックス
last最後の文字の次の文字インデックス(省略:first + 1:1文字)
get()文字列取得
icursor(index) 挿入カーソル位置設定
戻り値空文字列
index文字インデックス (0~)
index(index) 正規化文字インデックス取得 戻り値範囲内の文字インデックス
index文字インデックス (0~)
insert(index, string) 文字列挿入
scan_dragto(x)
scan_mark(x)
select_adjust(index)
selection_adjust(index)
select_clear()
selection_clear()
選択の解除
select_from(index)
selection_from(index)
select_present()
selection_present()
選択の有無 (True:選択あり / False:選択なし)
select_range(start, end)
selection_range(start, end)
select_to(index)
selection_to(index)
validate() ttk再検証
xview(*args) 水平方向スクロールコマンド処理
戻り値 (引数なし) 表示されている要素のスクロール位置 (0~1) のタプル (先頭要素, 最終要素)
戻り値 (引数あり)無効
argsコマンド と 引数
コマンドにより下記を呼び出し
xview_moveto【水平方向のスクロール (位置指定)】
xview_scroll【水平方向のスクロール (単位指定)】
※:Scrollbar【スクロールバー】等の関連ウィジェットの command【呼び出し関数】オプションに設定で、 関連ウィジェットの操作が反映
xview_moveto(fraction) 水平方向のスクロール (位置指定)
fraction位置 (0 ~ 1)
xview_scroll(number, what) 水平方向のスクロール (単位指定)
number方向の整数値 (負数:左方向 / 正数:右方向)
whatコマンド文字列 (UNITS:文字単位 / PAGES:ページ単位 / その他:左記の省略形)
共通メソッド (抜粋) 〔詳細はリンク先〕備考
cget( 'option' )
widget['option']
オプション値 取得
下の構文はオプション値の設定も可
config( ~ )
configure( ~ )
オプション 設定・取得
pack( ~ )配置 (パック形式)
grid( ~ )配置 (グリッド形式)
place( ~ )配置 (座標形式)
state( ~ ) ttk状態フラグ 取得・設定
instate( ~ ) ttk状態フラグ チェック

作成

import tkinter as tk
import tkinter.ttk as ttk

# トップレベルウィンドウ作成
root = tk.Tk()

# tk.Entry
var_entry = tk.StringVar(value="Entry")
entry_tk = tk.Entry(
    root,
    textvariable=var_entry,
)
entry_tk.pack(padx=10, pady=10)

# ttk.Entry
var_entry_ttk = tk.StringVar(value="ttk.Entry")
entry_ttk = ttk.Entry(
    root,
    textvariable=var_entry_ttk,
)
entry_ttk.pack(padx=10, pady=10)

# メインループ
root.mainloop()

Entryのサンプル画像


オプション設定

import tkinter as tk
import tkinter.ttk as ttk
from tkinter import font

# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("300x100")
# 初期処理
font_bold = font.Font(size=12, weight="bold")

# tk.Entry
var_tk = tk.StringVar()
var_tk.set("Entry (center)")
entry_tk = tk.Entry(
    root,
    foreground="blue",
    textvariable=var_tk,
    width=30,
)
entry_tk['justify'] = tk.CENTER
entry_tk.config(font=font_bold)
entry_tk.pack(padx=10, pady=10)

# ttk.Entry
var_ttk = tk.StringVar()
var_ttk.set("ttk.Entry (center)")
style = ttk.Style()
style.configure(
    "example.TEntry",
    foreground="blue",
)
entry_ttk = ttk.Entry(
    root,
    style="example.TEntry",
    textvariable=var_ttk,
    width=30,
)
entry_ttk['justify'] = tk.CENTER
entry_ttk.config(font=font_bold)
entry_ttk.pack(padx=10, pady=10)

# メインループ
root.mainloop()

Entryのサンプル画像


検証処理

import tkinter as tk
import tkinter.ttk as ttk
from tkinter import font
import re

# 入力検証処理
def validate(d, i, P, s, S, v, V, W):
    var_error.set("")
    msg = f"%{d=}\n%{i=}\n%{P=}\n%{s=}\n%{S=}\n%{v=}\n%{V=}\n%{W=}"
    var_msg.set(msg)
    match = re.fullmatch(var_pattern.get(), P)
    return match != None


# 入力検証NG処理
def invalid():
    var_error.set("Error")


# トップレベルウィンドウ作成
root = tk.Tk()
root.geometry("400x400")
# 初期処理
font_bold = font.Font(size=12, weight="bold")
vcmd = (root.register(validate),
        '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')

# Label (msg)
var_msg = tk.StringVar(value="label_msg")
label_msg = tk.Label(
    root,
    anchor=tk.W,
    font=font_bold,
    justify=tk.LEFT,
    textvariable=var_msg,
    relief=tk.SUNKEN,
    )
label_msg.pack(side=tk.BOTTOM, fill=tk.X)

# Label (error)
var_error = tk.StringVar(value="label_error")
label_error = tk.Label(
    root,
    anchor=tk.W,
    font=font_bold,
    justify=tk.LEFT,
    textvariable=var_error,
    relief=tk.SUNKEN,
    )
label_error.pack(side=tk.BOTTOM, fill=tk.X)

# pattern
var_pattern = tk.StringVar(value="[a-z]*")
entry_pattern = ttk.Entry(
    root,
    font=font_bold,
    textvariable=var_pattern,
    )
entry_pattern.pack(fill=tk.X)

# Entry (focus)
var_focus = tk.StringVar(value="focus")
entry_focus = ttk.Entry(
    root,
    name="entry_focus",
    font=font_bold,
    textvariable=var_focus,
    validate="focus",
    validatecommand=vcmd,
    invalidcommand=invalid,
    )
entry_focus.pack(fill=tk.X)

# Entry (focusin)
var_focusin = tk.StringVar(value="focusin")
entry_focusin = ttk.Entry(
    root,
    name="entry_focusin",
    font=font_bold,
    textvariable=var_focusin,
    validate="focusin",
    validatecommand=vcmd,
    invalidcommand=invalid,
    )
entry_focusin.pack(fill=tk.X)

# Entry (focusout)
var_focusout = tk.StringVar(value="focusout")
entry_focusout = ttk.Entry(
    root,
    name="entry_focusout",
    font=font_bold,
    textvariable=var_focusout,
    validate="focusout",
    validatecommand=vcmd,
    invalidcommand=invalid,
    )
entry_focusout.pack(fill=tk.X)

# Entry (key)
var_key = tk.StringVar(value="key")
entry_key = ttk.Entry(
    root,
    name="entry_key",
    font=font_bold,
    textvariable=var_key,
    validate="key",
    validatecommand=vcmd,
    invalidcommand=invalid,
    )
entry_key.pack(fill=tk.X)

# Entry (all)
var_all = tk.StringVar(value="all")
entry_all = ttk.Entry(
    root,
    name="entry_all",
    font=font_bold,
    textvariable=var_all,
    validate="all",
    validatecommand=vcmd,
    invalidcommand=invalid,
    )
entry_all.pack(fill=tk.X)

# メインループ
root.mainloop()

出力例

widget-entry-validation.png