Tkinterの使い方:エントリー(Entry)の使い方

エントリーウィジェットの説明ページアイキャッチ

このページでは tkinter のウィジェットの1つである「エントリー(Entry クラス)」の使い方について解説していきたいと思います。

エントリーウィジェット

まずはエントリーウィジェットがどのようなものであるかについて解説していきます。

エントリーウィジェットとは

エントリーは下の図のようなウィジェットになります(OS 等の環境によっては見た目が異なる可能性があります)。

エントリーウィジェットの説明図

このエントリーは、主にユーザーから文字列の入力を受け付ける目的で使用します(単に文字列を表示するために使用しても問題ありません)。

エントリーウィジェットにユーザーが文字列を入力する様子

エントリーをクリックすると、クリックした位置周辺に挿入カーソルがセットされます。さらに、その状態でキーボードで文字列を入力すれば、その文字列がその挿入カーソルの位置に挿入されます。

挿入カーソルの説明図

MEMO

エントリーに入力済みの文字列よりも後ろ側をクリックした場合は、文字列の最後の部分に挿入カーソルがセットされます

さらに tkinter のエントリーでは、他のアプリ同様に、文字列をマウスで選択するようなことも可能です。この状態で delete キーや BackSpace キーを押すことで、選択中の文字列を削除することができます。

エントリーの文字列を選択する様子

また、選択中の文字列をエントリーに貼り付けるような操作も行うことができます。

このエントリーは、前述の通り主にユーザーから文字列の入力を受け付ける目的で使用します。

例えば、下記を受け付けるような場合に利用すると便利なウィジェットだと思います。

  • ログインを行うようなアプリで、名前やパスワードの入力をユーザーから受け付ける
  • ファイルを読み込むようなアプリで、読み込むファイルのファイルパスの入力をユーザーから受け付る

で、そもそもユーザーからの文字列入力を受け付けるのは、その文字列に応じてアプリの動作を変更したい時だと思います。

なので、エントリー使用時は、アプリがなんらかの動作を行うときにエントリーに入力されている文字列を取得し、その文字列に応じた処理を行うようにスクリプトを組むの一般的だと思います。

例えばファイルを読み込むようなアプリの場合は、エントリーからユーザーが入力したファイルパスを取得し、その取得したファイルを読み込むように処理を実行します。

エントリーの文字列をアプリに反映する例

こんな感じで、エントリー使用時は、エントリーを作成することも重要ですが、エントリーから文字列を取得する処理も重要になります。

スポンサーリンク

エントリーとテキストボックスの違い

同様にユーザーから文字列の入力を受け付ける目的で使用するウィジェットとしては「テキストボックス(Text)」が存在しますが、テキストボックスでは複数行の文字列の入力を受け付けるウィジェットになります。長い文章などを入力できるようにする場合はテキストボックスを用います。

一方で、エントリーで受け付けることができる文字列は1行分のみになります。なので短い文字列、例えば名前やパスワードやファイルパスなどの入力を受け付ける分にはエントリーの方が向いています。

EntryとTextの違いの説明図

エントリーの使い方

では、このエントリーの使い方について解説していきたいと思います。

エントリーを使用する際の基本的な手順は下記の2つになります。

  • エントリーウィジェットの作成
  • エントリーに入力された文字列の取得

1つ1つ詳細に解説していきたいと思います。

エントリーウィジェットの作成

エントリーウィジェットは、tkinter の Entry クラスのコンストラクタを実行することで作成することができます。

エントリーの作成
# app はメインウィンドウ
entry = tkinter.Entry(
	app
)

作成したエントリーを配置すると下の図のようなエントリーがアプリ上に表示されるようになります。

エントリーウィジェットの見た目

エントリーをクリックすれば、エントリー内部に挿入カーソルが点滅して表示されます。さらに、その状態でキーボードで文字列を入力すれば、その文字列がエントリーに表示されます。

エントリーウィジェットに文字列を入力する様子

ただ、エントリーは単に作成・配置しただけだと “何を入力するためのエントリー” であるかが分かりにくいです。一方で、エントリー自体には “何を入力するためのエントリー” であるかを説明するためのオプションが存在しません。

“何を入力するためのエントリー” であるかをユーザーに伝えるためには、ラベルやラベルフレームなどの他のウィジェットとエントリーを併用する必要があります。

例えば下記のスクリプトのようにラベルとエントリーを併用することで、”名前を入力するためのエントリー” であることをユーザーに伝えることができ、より使用しやすいアプリに仕立てることができます。

ラベルでエントリーを説明
# -*- coding:utf-8 -*-
import tkinter

# アプリの作成
app = tkinter.Tk()

# エントリーの作成
entry = tkinter.Entry(
	app
)
entry.grid(column=1, row=0)

# エントリー説明用のラベルの作成
label = tkinter.Label(
	app,
	text='名前'
)
label.grid(column=0, row=0)

# アプリの待機
app.mainloop()

grid で配置するときに、ラベルをエントリーの左側に配置するところがポイントです。grid については下記ページで解説していますので、詳しく知りたい方は下記ページを参考にしていただければと思います。

ウィジェット配置方法解説ページのアイキャッチTkinterの使い方:ウィジェットの配置(pack・grid・place)

スポンサーリンク

エントリーに入力された文字列の取得

エントリーウィジェットの作成・配置によりユーザーからの文字列入力を受け付けることができるようになりました。

続いては、エントリーにユーザーが入力した文字列を取得し、それをアプリの動作に反映する方法について解説していきたいと思います。

エントリーから文字列を取得する方法としては大きく分けて下記の2つが存在します。

  • エントリーウィジェットの get メソッドで取得する
  • ウィジェット変数の get メソッドで取得する

エントリーウィジェットの get メソッドで取得する

エントリーウィジェットのクラスである Entry には get メソッドが存在します。そして get は “エントリーに入力されている文字列を取得する” メソッドです。

ですので、文字列を取得したいエントリーウィジェットに get メソッドを実行させることで、エントリーに入力された文字列を取得することができます。

下記はボタンクリック時にエントリーウィジェットの get メソッドを実行してエントリーに入力された文字列を取得し、それをラベルウィジェットに表示するスクリプトになります。

エントリーウィジェットのgetでの取得
# -*- coding:utf-8 -*-
import tkinter

def get_func():
	# エントリーに入力された文字列を取得してラベルに表示
	label.config(text=entry.get())
    
# アプリの作成
app = tkinter.Tk()

# エントリーの作成
entry = tkinter.Entry(
	app
)
entry.pack()

button = tkinter.Button(
	app,
	command=get_func,
	text="ボタン"
)
button.pack()

label = tkinter.Label(
	app,
	text=""
)
label.pack()

# アプリの待機
app.mainloop()

このスクリプトを実行すると下の図のようなアプリが表示されます。

エントリーへの入力文字列をアプリに反映する例1

エントリーにてきとうに文字列を入力後にボタンをクリックすれば、そのエントリーに入力した文字列がラベル部分に表示されます。

エントリーへの入力文字列をアプリに反映する例2

今回は単に入力された文字列を表示するだけの例になりますが、例えばこの取得した文字列を使用してログインの OK / NG を判断したり、取得した文字列をファイルパスとしてそのファイルを読み込むようにしたりすることで、ユーザーが入力した文字列をアプリの動作に反映することができます。

ウィジェット変数の get メソッドで取得する

続いて、エントリーに入力された文字列を取得するためのもう一つの方法としてウィジェット変数を利用するものを説明します。

まだウィジェット変数についてご存知ない方は、下記のページで詳しく解説していますので宜しければこちらをご覧いただければと思います。

ウィジェット変数の解説ページのアイキャッチTkinterの使い方:ウィジェット変数について解説【StringVar・BooleanVar・IntVar・DoubleVar】

ウィジェット変数をエントリーと連動させておくことで、エントリーに入力されている文字列をウィジェット変数の get メソッドにより取得することが可能になります。

下記はボタンクリック時にウィジェット変数の get メソッドを実行してエントリーに入力された文字列を取得し、それをラベルウィジェットに表示するスクリプトになります。

ウィジェット変数のgetでの取得
# -*- coding:utf-8 -*-
import tkinter

def get_func():
	# エントリーに入力された文字列を取得してラベルに表示
	label.config(
		text=str_v.get()
	)
	
# アプリの作成
app = tkinter.Tk()

# ウィジェット変数の作成
str_v = tkinter.StringVar()

# エントリーの作成
entry = tkinter.Entry(
	app,
	textvariable=str_v # ウィジェット変数との連動設定
)
entry.pack()

button = tkinter.Button(
	app,
	command=get_func,
	text="ボタン"
)
button.pack()

label = tkinter.Label(
	app,
	text=""
)
label.pack()

# アプリの待機
app.mainloop()

アプリの動作はエントリーウィジェットの get メソッドで取得するで紹介した例と全く同じなので説明は省略します。

ウィジェット変数を利用するメリット

上記で解説したように、エントリーウィジェットの入力文字列を取得する方法はエントリーウィジェットの get メソッドで取得するウィジェット変数の get メソッドで取得するの2つの方法があります。

入力文字列を取得したいだけであれば、上記のどちらの方法を用いても問題はありません。そうなると、ウィジェット変数を用意しなくても良い前者の方法の方が楽だと思います。

ただし、ウィジェット変数を用意しておくと、”スクリプトから入力文字列の変更を行うことができる” というメリットがあります。

エントリーウィジェットには get メソッドで文字列を取得することは可能ですが、set メソッドが用意されていないのでスクリプトからエントリーの入力文字列を変更するようなことはできません。また text オプションがエントリーウィジェットには効かないので、config メソッドから text オプションを変更するようなこともできません。

ですので、エントリーウィジェットの入力文字列を変更することができるのは “ユーザーのみ” ということになります。自動的に文字列を変更したり、アプリ起動時に何らかの文字列を表示しておくようなことができません。

一方で、ウィジェット変数には set メソッドが用意されており、スクリプトからエントリーの入力文字列を変更するようなことが可能です。

ですので、下記のようなことを行いたい場合はウィジェット変数を利用する必要があります。

  • アプリ起動直後からエントリーウィジェットに文字列を入力しておきたい
  • ボタンクリックなど(要はエントリーウィジェットへの操作以外)の操作が発生した時に自動的にエントリーウィジェットの文字列を変更したい

エントリーウィジェットのオプション

ここまでは、エントリーウィジェットの “最も基本的な使い方” について解説してきました。

ここからはもうちょっと詳細な設定や使い方について解説していきたいと思います。

まずはエントリーウィジェットの詳細な設定を行うオプションについて解説していきます。

エントリーウィジェットに指定可能なオプションの一覧は、下記により表示することが可能です。

指定可能なオプションの一覧
# entryはEntryのインスタンス
print(entry.keys())

下記の5つについてはエントリーウィジェットの validation 機能に関するオプションになります。

  • validate
  • validatecommand
  • vcmd
  • invalidcommand
  • invcmd

これらに関しては下記ページで解説していますので、特に validation 機能について知りたい、validation 機能を使いたい方は下記ページを読んでみていただければと思います。

validationの解説ページアイキャッチTkinterの使い方:validation機能の使い方(エントリーウィジェットの拡張)
MEMO

私の下記環境での実行結果をもとに説明していますが、環境によっては動きが異なるかもしれません

実際にご自身の環境で実行結果を確認していただくと、より確実に設定の効果を理解することができると思います

  • OS:macOS Big Sur
  • Python:3.8
  • Tkinter:8.6

exportselection というオプションも用意されているのですが、私の環境ではうまく動作させられなかったため説明は省略させていただいています。

textvariable

textvariable はエントリーウィジェットと連動させるウィジェット変数を指定するオプションになります。

前述の通り、textvariable に指定したウィジェット変数に get を実行させればエントリーウィジェットに入力されている文字列を取得することができます。

さらに set を実行させればエントリーウィジェットの文字列をスクリプトから変更することもできます。

ウィジェット変数については下記ページで詳細を解説していますので、詳しく知りたい方は下記ページを読んでみてください。

ウィジェット変数の解説ページのアイキャッチTkinterの使い方:ウィジェット変数について解説【StringVar・BooleanVar・IntVar・DoubleVar】

スポンサーリンク

width

width はエントリーウィジェットの幅のサイズを指定するオプションになります。

widthオプションの説明図

エントリーウィジェットにおける width はピクセル数ではなく “文字数” を指定します。文字数によってエントリーウィジェットの幅のサイズが決まるので、文字のサイズやフォントの種類によって幅のサイズが変化することになります。

また、エントリーウィジェットは文字列を1行分のみ入力可能な文字列ですので高さを指定するオプションはありません。

下記はエントリーウィジェットの幅のサイズを 10 に指定する例になります。

widthの指定例
entry = tkinter.Entry(
	app,
	width=10
)

justify

justify はエントリーウィジェットに入力された文字列の寄せ方向を指定するオプションになります。

justifyオプションの説明図

justify は下記の3つを指定することが可能です。

  • tkinter.CENTER:中央寄せ
  • tkinter.LEFT:左寄せ(デフォルト)
  • tkinter.RIGHT:右寄せ

下記はエントリーウィジェットへの入力文字列を中央寄せに指定する例になります。

justifyの指定例
entry = tkinter.Entry(
	app,
	justify=tkinter.CENTER
)

font

font はエントリーウィジェットに入力された文字列のフォントを指定するオプションになります。

fontオプションの説明図

font にはフォントの情報を格納したタプルや tkinter.font.Font クラスのインスタンスを指定することができます。フォントの指定方法の詳細は下記ページで解説していますので、詳しく知りたい方は下記ページを参考にしていただければと思います。

フォント指定解説ページのアイキャッチTkinterの使い方:フォントの指定方法

下記はエントリーウィジェットの文字列のサイズを 40 に指定する例になります。

fontの指定例
entry = tkinter.Entry(
	app,
	font=("", 40)
)

スポンサーリンク

bg(or background

bg(or background)は(通常状態の)エントリーウィジェットの背景色を指定するオプションになります。

bgオプションの説明図

bg(or background)にはカラーコードや色名を指定します。

下記はエントリーウィジェットの背景を "yellow" に指定する例になります。

bgの指定例
entry = tkinter.Entry(
	app,
	bg="yellow"
)

fg(or foreground

fg(or foreground)は(通常状態の)エントリーに入力された文字列の色を指定するオプションになります。

fgオプションの説明図

fg(or foreground)にはカラーコードや色名を指定します。

下記はエントリーに入力された文字列の色を "red" に指定する例になります。

fgの指定例
entry = tkinter.Entry(
	app,
	fg="red"
)

state

state はエントリーウィジェットの状態を指定するオプションになります。

エントリーウィジェットの state に指定可能なパラメータは下記の3つになります。

  • tkinter.NORMAL:通常状態(デフォルト)
  • tkinter.DISABLED:無効状態
  • "readonly":読み取り専用状態
    • (もしかしたら上記のように定義名があるかも)

tkinter.NORMAL を指定した場合、ユーザーはエントリーへの文字列の入力や文字列の選択・コピー等を行うことができます。

"readonly" を指定した場合、ユーザーはエントリーへの文字列の入力を行うことができません。一方で文字列の選択やコピー等は行うことができます。

tkinter.DISABLED を指定した場合は、ユーザーはエントリーへの文字列の入力もできませんし、文字列の選択を行うこともできなくなります。

下記はエントリーウィジェットを読み取り専用状態に設定する例になります。

stateの指定例
entry = tkinter.Entry(
	app,
	state="readonly"
)

スポンサーリンク

disabledbackgrounddisabledforeground

disabledbackgrounddisabledforeground はそれぞれエントリーウィジェットの無効状態時の背景色と文字の色を指定するオプションになります。

disabled関連オプションの説明図

disabledbackgrounddisabledforeground にはカラーコードや色名を指定します。

下記は無効状態時のエントリーウィジェットの背景を "gray" 、文字の色を "white" に指定する例になります。

disabled関連の指定例
entry = tkinter.Entry(
	app,
	state=tkinter.DISABLED,
	disabledbackground="gray",
	disabledforeground="white"
)

readolnlybackground

readonlybackground はエントリーウィジェットの読み取り専用状態時の背景色を指定するオプションになります。読み取り専用状態時の文字の色を指定するオプションは存在せず、fgforeground で指定した文字の色がそのまま使用されます。

readonlybackgroundオプションの説明図

readonlybackground にはカラーコードや色名を指定します。

下記は読み取り専用状態時のエントリーウィジェットの背景を "green" に指定する例になります。

readonlybackgroundの指定例
entry = tkinter.Entry(
	app,
	state="readonly",
	readonlybackground="green"
)

bd(or borderwidth

bd(or borderwidth)はエントリーウィジェットの枠線の太さを指定するオプションになります。

bdオプションの説明図

bd(or borderwidth)にはピクセル数を指定します。

下記はエントリーウィジェットの枠線の太さを 10 px に指定する例になります。

bdの指定例
entry = tkinter.Entry(
	app,
	bd=10
)

スポンサーリンク

relief

relief はエントリーウィジェットの見た目を指定するオプションです。

reliefオプションの説明図

relief に指定可能なパラメータは下記の6つになります。

  • tkinter.RAISED
  • tkinter.SUNKEN
  • tkinter.FLAT
  • tkinter.RIDGE
  • tkinter.GROOVE
  • tkinter.SOLID

下記はエントリーウィジェットの見た目を tkinter.RAISED に指定する例になります。

reliefの設定例
entry = tkinter.Entry(
	app,
	bd=10,
	relief=tkinter.RAISED
)

reliefは枠線の描画方法を変更することでウィジェットの見た目を変更するものですので、枠線がない場合(bd = 0 の場合)は relief を指定しても見た目が変わらないので注意してください。

show

show はエントリーウィジェットの文字列を別の文字に置き換えるためのオプションになります。

showオプションの説明図

通常エントリーウィジェットには入力された文字列がそのまま表示されます。ですが、この show を指定することで、入力された文字列ではなく show に指定した文字を表示するように設定することができます。

例えばパスワードを入力するような場合に、他の人から入力文字列が見えないよう、全ての文字が * に置き換えて表示されることがありますよね?show"*" を指定すれば、これと同じようなことができるようになります。

下記はエントリーウィジェットに入力された文字を * に置き換えて表示するように指定する例になります。

showの利用例
entry = tkinter.Entry(
	app,
	show="*"
)

takefocus

takefocus はタブキーによるフォーカスの有効無効を指定するオプションになります。

エントリーウィジェットにおいては、フォーカスをあてることでそのエントリーウィジェットに対して文字列を入力することができるようになります。

takefocus に指定可能なパラメータは下記のようになります。

  • 0:フォーカスを無効(フォーカスがあてられない)
  • 1:フォーカスを有効(フォーカスがあてられる)(デフォルト)

下記はエントリーウィジェットへのフォーカスを無効に指定する例になります。

takefocusの指定例
entry = tkinter.Entry(
	app,
	takefocus=0
)

スポンサーリンク

highlightcolorhighlightbackgroundhighlightthickness

highlightcolorhighlightbackgroundhighlightthickness は、エントリーウィジェットにフォーカスがあてられた時&フォーカスが外れた時の囲い線の見た目を指定するオプションになります。

  • highlightcolor:フォーカスがあてられた時の囲い線の色
  • highlightbackground:フォーカスが外れた時の囲い線の色
  • highlightthickness:囲い線の太さ

highlightcolorhighlightbackground にはカラーコードや色名を、highlightthickness にはピクセル数を指定します。

下記はこれらのキーワードを指定するスクリプトの例になります。

highlight関連の設定例
entry = tkinter.Entry(
	app,
	highlightthickness=10,
	highlightbackground="blue",
	highlightcolor="red"
)

上記で作成したエントリーは下の図のようなものになります。

highlight関連オプションの説明図1

青い線がフォーカスに対するエントリーの囲い線になります。この囲い線の太さが、highlightthickness で指定している 10 px になります。

また、現状このエントリーにフォーカスが当たっていないので、この囲い線の色は highlightbackground で指定している "blue" になります。

この状態でエントリーをクリックしてエントリーにフォーカスをあてると、今度はこの囲い線の色が highlightcolor で指定している "red" に変化します。

highlight関連オプションの説明図2

selectbackgroundselectforegroundselectborderwidth

selectbackgroundselectforegroundselectborderwidth は選択した文字列や選択カーソルの見た目を変更するためのオプションになります。

より具体的には、これら3つにより下記を指定することができます。

  • selectbackground:選択カーソルの背景色(カラーコードや色名を指定)
  • selectforeground:選択されている文字列の色(カラーコードや色名を指定)
  • selectborderwidth:選択カーソルの枠線の太さ(ピクセル数を指定)

select関連オプションの説明図

選択カーソルと枠線は同じ色で見分けがつきませんので、selectborderwidth の指定サイズ大きくすると選択カーソル自体が大きくなるように感じると思います。

下記は選択カーソル関連のオプションの指定例になります。

select関係の指定例
entry = tkinter.Entry(
	app,
	selectbackground="green",
	selectforeground="white",
	selectborderwidth=10
)

insertbackgroundinsertwidthinsertborderwidth

insertbackgroundinsertwidthinsertborderwidth は挿入カーソルの見た目を変更するためのオプションになります。

より具体的には、これら3つにより下記を指定することができます。

  • insertbackground:挿入カーソルの色(カラーコードや色名を指定)
  • insertwidth:挿入カーソルの幅(ピクセル数を指定)
  • insertborderwidth:挿入カーソルの斜面部の幅(ピクセル数を指定)

insertの見た目関連オプションの説明図

insertborderwidth0 よりも大きい値を指定すると挿入カーソルの見た目が relief=tkinter.RAISED で指定したような見た目の形状になります。

insertborderwidth はこの形状における斜面部の幅を指定するオプションになります。

insertborderwidthオプションの説明図

下記は挿入カーソルの見た目関連のオプションの指定例になります。

insert関係の指定例
entry = tkinter.Entry(
	app,
	insertbackground="green",
	insertwidth=20,
	insertborderwidth=10
)

スポンサーリンク

insertontimeinsertofftime

insertontime は挿入カーソルの点灯時間を、insertofftime は挿入カーソルの消灯時間をそれぞれ指定するためのオプションになります。要は挿入カーソルの点滅間隔を変更するためのオプションです。

insertontime と insertofftime にはミリ秒単位で整数を指定します。

下記は点灯時間を 1000 ms に、消灯時間を 100 ms に指定する例になります。

inserttime関連の指定例
entry = tkinter.Entry(
	app,
	insertontime=1000,
	insertofftime=100
)

xscrollcommand

xscrollcommand はエントリーウィジェットとスクロールバーを連動させるためのオプションになります。スクロールバーと連動させることで、入力した文字列がエントリーウィジェットのサイズを超える場合に、エントリーウィジェットの横方向のスクロールをスクロールバーで行うことが可能になります(スクロールバーが無くても挿入カーソルの移動によりスクロールを行うことは可能です)。

スクロールバーの設定や具体的なスクリプトについては下記ページで解説していますので、詳細は下記ページを参考にしていただければと思います。

スクロールバーの作成方法解説ページアイキャッチTkinterの使い方:スクロールバー(Scrollbar)の使い方

cursor

cursor はエントリーウィジェット上にマウスカーソルが入った時のカーソルの見た目(アイコン)を指定するオプションです。

例えば cursor には下記のような値を設定することが可能です。

  • "hand"
  • "ibeam"
  • "wait"
  • "poof"

OS 毎に指定可能な値が異なる可能性が高いので注意してください。

下記はエントリーウィジェット上のマウスカーソルの見た目を "hand" に指定する例になります。

cursorの指定例
entry = tkinter.Entry(
	app,
	cursor="hand"
)

スポンサーリンク

エントリーウィジェットのメソッド

最後にエントリーウィジェット(Entry クラス)のメソッドについて解説していきます。

引数として “何文字目か” を指定するメソッドが多いですが、全て最初の文字を 0 文字目として考えて指定する必要がある点に注意してください(最初の文字を 1 文字目と考えないように)。

また、selection_from などの selection_ から始まるメソッドは、select_ とメソッド名を置き換えても同様の動作を行います。例えば selection_fromselect_from は同じ動作を行うメソッドになります。

ですので、このページでは selection_ から始まるメソッド名で解説を行いますが、select_ から始まるメソッド名に置き換えても同様の動作を実現することができます。

get

get はエントリーウィジェットに入力されている文字列を取得するメソッドです。

get
text = entry.get()

引数は不要です。

実行するとエントリーウィジェットに入力されている文字列が返却されます。

delete

delete はエントリーウィジェットに入力されている文字列を削除するメソッドです。

delete
entry.delete(first, last)

delete メソッドを実行すると first 文字目の文字から last - 1 文字目の文字までがエントリーウィジェットから削除されます。

last は省略することができ、この場合は first 文字目の文字のみが削除されます。

スポンサーリンク

icursor

icursor はエントリーウィジェットに挿入カーソルをセットするメソッドです。

icursor
entry.icursor(index)

icursor メソッドを実行すると、index 文字目の文字の直前に挿入カーソルがセットされます。

エントリーウィジェットに入力されている文字数が index 以下の場合は、文字列の最後尾に挿入カーソルがセットされます。

MEMO

icursor メソッドはエントリーウィジェットにフォーカスがあたっている時のみに効果のあるメソッドのようです

insert

insert はエントリーウィジェットに文字列を挿入するメソッドです。

insert
entry.insert(index, string)

insert メソッドを実行すると、index 文字目の文字の直前に文字列 string が挿入されます。

エントリーウィジェットに入力されている文字数が index 以下の場合は、文字列の最後尾に string が挿入されます。

selection_adjust

selection_adjust は文字列を選択するメソッドの1つです。

selection_adjust
entry.selection_adjust(index)

selection_adjust を実行すると、”現在の挿入カーソルの位置” から “index 文字目の文字の直前” までが選択されます。

選択される範囲が “index 文字目の文字の直前まで” ですので、挿入カーソルが index 文字目よりも後ろ側にある場合は index 文字目の文字も含めて選択されます。

逆に挿入カーソルが index 文字目の文字よりも前側にある場合は index 文字目の文字は含めずに選択されます。

挿入カーソルの位置が index 文字目の文字の直前と一致する場合は文字列の選択は行われません。

スポンサーリンク

selection_clear

selection_clear はエントリーウィジェットにおける文字列を選択を解除するメソッドです。

selection_clear
entry.selection_clear()

selection_clear は引数は不要で、エントリーウィジェットに入力されている文字列を選択した状態で実行すると、その選択が解除されます。

selection_from

selection_from は文字列を選択するメソッドの1つです。次に説明する selection_to と組み合わせて使用します。

selection_from
entry.selection_from(index)

selection_from を実行すると index 文字目の文字の直前に選択位置の開始点がセットされます。ただし、これだけでは選択が行われません。selection_from 実行後に、次に説明する selection_to を実行することで選択が行われます。

selection_to

selection_to は文字列を選択するメソッドの1つです。1つ前に説明した selection_from と組み合わせて使用します。

selection_to
entry.selection_to(index)

selection_to を実行すると index 文字目の文字の直前に選択位置の終了点がセットされます。

1つ前に説明した selection_from メソッドにより選択位置の開始点をセットしておけば、その開始点から終了点の間の文字が選択されます。

スポンサーリンク

selection_range

selection_range は文字列を選択するメソッドの1つです。前述で説明した selection_fromselection_range を同時に実行するようなメソッドになります。。

selection_range
entry.selection_range(start, end)

selection_range を実行すると start 文字目の文字から end-1 文字目の文字までが選択されます。

selection_present

selection_present はエントリーウィジェットの文字列が選択中であるかどうかを判断するメソッドになります。

selection_present
is_selection = entry.selection_present()

selection_present には引数は不要です。

selection_present を実行すると、戻り値としてエントリーウィジェットの文字列が選択されている場合は True が、それ以外の場合は False が取得できます。

まとめ

このページでは tkinter におけるエントリーウィジェットについて解説しました!

エントリーウィジェットを用いることで、GUI アプリの中でユーザーからの文字列入力を受け付けることができるようになります。

さらに、このエントリーウィジェットに入力された文字列を用いて、例えばログインなどの機能も実現できるようになります。

ユーザー名やパスワード、ファイルパス、サイズ設定などをユーザーに入力してもらいたい時に活躍するウィジェットなので、ぜひ使い方を覚えておいてください!