Tkinterで使われるentryって?有効な活用方法を徹底解説!?
今回はTkinterで使われるentryに関して、有効な活用方法を徹底解説いたします。entryに関して知りたい、活用方法を学習したい方へおすすめです。ぜひ最後までご確認ください。
- そもそもTkinterで利用されるentryとは?
- 下準備
- Tkinterで活用されるentry Widgetの定義
- textvariable
- insertofftime, insertontime
- readonlybackground
- borderwidth, bd
- width
- cursor
- font
- fg, foreground
- background, bg
- relief
- justify
- state
- disabledbackground, disabledforeground
- show
- exportselection
- selectbackground
- selectforeground
- selectborderwidth
- highlightcolor, highlightbackground, highlightthickness
- insertbackground
- insertwidth
- xscrollcommand
- 入力制限に関するoption
- entryで活用される3種類の関数
- まとめ
- 参考文献
執筆者 - おすすめの記事3選
そもそもTkinterで利用されるentryとは?
Tkinterで利用されるentryとは、Widgetの一種でWebページやアプリの会員登録、お問い合わせ画面などで利用されるテキストボックス を意味します。
別名entry Widgetと呼ばれます。
見慣れない言葉がいくつか出てきましたね。。以下の「Tkinterの構成要素」を確認しながら、理解を深めましょう。
Tkinterの構成要素
Tkinterの構成要素として、Window, Frame, Widgetの概念が存在します。
名称 | 説明文 |
---|---|
Window | 画像のオレンジ色枠の部分になります。Tkinter画面全体を表します。 |
Frame | 画像内の紫色枠の部分になります。Widgetが1つ以上ある場合に、取りまとめるものです。 |
Widget | 青色枠もしくは黄緑色枠で囲まれる部分になります。1つの機能を持つ最小単位 = Widgetと考えると良いでしょう。 |
前の章でTkinterで活用されるentryとは、Widgetの一種でWebページやアプリの会員登録、お問い合わせ画面などで利用されるテキストボックスとお伝えしました。
「Tkinterの構成要素」の画像内では、青色枠に該当するWidgetに対して、編集することになります。
Tkinterの構成要素を理解したところで、実際にentryの活用方法を理解していきましょう。
黄緑色枠の部分もWidgetなので編集対象だと考える方もいるかもしれません。黄緑色枠の部分はWidgetではあるけれども、buttonを表すWidgetですので、今回は編集対象から外れることになります。
下準備
今回は先ほど紹介した「Tkinterの構成要素」の画像を元に、entryの使い方をお伝えします。
下にコードを貼り付けておきますので、画像と見比べながら、コードを確認してみてください。できればコードに触れて、一緒にentryを体験しましょう。
1import tkinter as tk
2
3class Application(tk.Frame):
4 # 氏名用のentry Widget変数
5 entryName = None
6 # パスワード用のentry Widget変数
7 entryPassword = None
8
9 # クリアボタンがクリックされた場合に実行される関数
10 # 氏名、パスワードの入力情報をクリアする。
11 def clearCommand(self):
12 # delete : 氏名情報の削除を行う。
13 # 第一引数 : 削除する文字列の開始位置(0からスタート)
14 # 第二引数 : 削除する文字列の終わり位置
15 # tk.END : 文字列の最終位置
16 self.entryName.delete(0, tk.END)
17
18 # delete : パスワード情報の削除を行う。
19 # 第一引数 : 削除する文字列の開始位置(0からスタート)
20 # 第二引数 : 削除する文字列の終わり位置
21 # tk.END : 文字列の最終位置
22 self.entryPassword.delete(0, tk.END)
23
24 print('名前とパスワードをクリアしました。')
25
26 # 追加ボタンがクリックされた場合に、氏名用のentry Widgetの末尾に"Bob"を追加入力する関数
27 def addNameBobButton(self):
28 # insert : 文字列の挿入を行う。
29 # 第一引数 : 追加文字列の挿入開始位置(0からスタート)
30 # tk.END : 文字列の最終位置
31 # 第二引数 : 追加する文字列情報
32 self.entryName.insert(tk.END, "Bob")
33
34 # パスワード確認ボタンがクリックされた場合に実行される関数
35 def getPassword(self):
36 # get : 現在入力されているパスワード情報を表示する関数
37 print('パスワード : ' + self.entryPassword.get())
38
39 def __init__(self, master=None):
40 # Windowの初期設定を行う。
41 super().__init__(master)
42
43 # Windowの画面サイズを設定する。
44 # geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
45 self.master.geometry("300x200")
46
47 ############################################## frame Widget START ##############################################
48
49 # Windowを親要素として、frame Widget(Frame)を作成する。
50 # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
51 frame = tk.Frame(self.master)
52
53 # Windowを親要素とした場合に、frame Widget(Frame)をどのように配置するのか?
54 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
55 frame.pack()
56
57 ############################################## frame Widget END ##############################################
58
59 ############################################## entry Widget START ##############################################
60
61 # frame Widget(Frame)を親要素として、氏名用のentry Widgetを作成する。
62 # width : 幅の設定
63 self.entryName = tk.Entry(frame, width=15)
64
65 # frame Widget(Frame)を親要素とした場合に、氏名用のentry Widgetをどのように配置するのか?
66 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
67 self.entryName.pack()
68
69 # 氏名用のentry Widgetへデフォルトで格納したい文字列の挿入。
70 # 第一引数 : 文字列の挿入開始位置(0からスタート)
71 # 第二引数 : 挿入文字列
72 self.entryName.insert(0, "氏名")
73
74 # frame Widget(Frame)を親要素として、パスワード用のentry Widgetを作成する。
75 # width : 幅の設定
76 self.entryPassword = tk.Entry(frame, width=15)
77
78 # frame Widget(Frame)を親要素とした場合に、パスワード用のentry Widgetをどのように配置するのか?
79 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
80 self.entryPassword.pack()
81
82 # パスワード用のentry Widgetへデフォルトで格納したい文字列の挿入。
83 # 第一引数 : 文字列の挿入開始位置(0からスタート)
84 # 第二引数 : 挿入文字列
85 self.entryPassword.insert(0, "パスワード")
86
87 ############################################## entry Widget END ##############################################
88
89 ############################################## button Widget START ##############################################
90
91 # frame Widget(Frame)を親要素として、button Widgetを作成する。
92 # text : テキスト情報
93 # width : ボタンの幅設定
94 # command : ボタンをクリックした場合に、実行する関数を設定する。self.getPasswordとする。
95 # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
96 confirmPasswordButton = tk.Button(frame, text="パスワード確認", width=15, command=self.getPassword)
97
98 # frame Widget(Frame)を親要素とした場合に、button Widgetをどのように配置するのか?
99 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
100 confirmPasswordButton.pack(side=tk.LEFT)
101
102 # frame Widget(Frame)を親要素として、button Widgetを作成する。
103 # text : テキスト情報
104 # command : ボタンをクリックした場合に、実行する関数を設定する。self.addNameBobButtonとする。
105 # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
106 addNameBobButton = tk.Button(frame, text="追加", command=self.addNameBobButton)
107
108 # frame Widget(Frame)を親要素とした場合に、button Widgetをどのように配置するのか?
109 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
110 addNameBobButton.pack(side=tk.LEFT)
111
112 # frame Widget(Frame)を親要素として、button Widgetを作成する。
113 # text : テキスト情報
114 # command : ボタンをクリックした場合に、実行する関数を設定する。self.clearCommandとする。
115 # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
116 clearButton = tk.Button(frame, text="クリア", command=self.clearCommand)
117
118 # frame Widget(Frame)を親要素とした場合に、button Widgetをどのように配置するのか?
119 # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
120 clearButton.pack(side=tk.LEFT)
121
122 ############################################## button Widget END ##############################################
123
124# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
125if __name__ == "__main__":
126 # Windowを生成する。
127 # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
128 root = tk.Tk()
129 app = Application(master=root)
130 # Windowをループさせて、継続的にWindow表示させる。
131 # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
132 app.mainloop()
上記のコードをPython環境で実行すると、「Tkinterの構成要素」で紹介した画像の結果が表示されます。
Tkinterで活用されるentry Widgetの定義
entry Widgetは、
1import tkinter as tk
2
3tk.Entry(option1, option2, ...) or tk.Entry('親要素', option1, option2, ...)
で定義されます。
entry Widgetで使われるoptionの種類としては
- textvariable
- insertofftime, insertontime
- readonlybackground
- borderwidth, bd
- width
- cursor
- font
- fg, foreground
- background, bg
- relief
- justify
- state
- disabledbackground, disabledforeground
- show
- exportselection
- selectbackground
- selectforeground
- selectborderwidth
- highlightcolor, highlightbackground, highlightthickness
- insertbackground
- insertwidth
- xscrollcommand
- 入力制限に関するoption
があります。順番に見ていきましょう。
※ optionの種類一覧を調べたい場合は、以下のようにコードを記述してご確認ください。
1import tkinter as tk
2
3# entryを生成する。
4entry = tk.Entry()
5# entryに関するoptionの種類一覧を取得する。
6print(entry.keys())
textvariable
textvariable optionを利用すると、entry Widgetへ入力される文字列の初期化や更新を行います。
例えば下準備コードを、以下のように変更すると、
1 ...
2
3+ # entry Widgetへ入力される文字列をstring型の変数とする。
4+ # StringVarについて : https://kuroro.blog/python/K53voPjJuKFfYrjmP8FP/
5+ var = tk.StringVar()
6
7- self.entryName = tk.Entry(frame, width=15)
8+ # textvariable : entry Widgetへ入力される文字列をvar変数へ格納する。(string型の変数へ格納する)
9+ self.entryName = tk.Entry(frame, width=15, textvariable=var)
10
11 self.entryName.pack()
12 self.entryName.insert(0, "氏名")
13
14+ # entry Widgetへ入力される文字列をhogehogeへ更新する。
15+ var.set('hogehoge')
16
17 ...
以下の画像のように、entry Widgetへ入力される文字列を'氏名'から'hogehoge'へと更新します。
StringVar()に関しては、Tkinterで使われるWidget変数とは?StringVarを中心に解説!?でまとめていますので、詳しく知りたい方は是非ご確認ください。
insertofftime, insertontime
insertofftime optionを利用すると、カーソルが表示されてから消えるまでの時間(ミリ秒)を指定できます。0を指定すると、点滅なしになります。デフォルトは300ミリ秒です。
insertontime optionを利用すると、カーソルが消えてから表示されるまでの時間(ミリ秒)を指定できます。デフォルトは600ミリ秒です。
一目でわかるカーソル画像
readonlybackground
readonlybackground optionを利用すると、entry Widgetの状態(state)がreadonlyの時の、背景色を設定できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, state="readonly", readonlybackground="green") or self.entryName.configure(width=15, state="readonly", readonlybackground="green")
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, state="readonly", readonlybackground="green")
以下の画像のようにentry Widgetを描画します。
borderwidth, bd
borderwidth option, bd optionを利用すると、entry Widgetの枠の大きさを設定できます。
borderwidthとbd両方のoptionを用いて、値を設定した場合、後ろの引数に設定されるoptionが優先されます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, bd=15) or self.entryName.configure(width=15, bd=15)
4##################################
5self.entryName = tk.Entry(frame, width=15, bd=15)
以下の画像のようにentry Widgetを描画します。
width
width optionを設定すると、entry Widgetの幅を設定できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=30) or self.entryName.configure(width=30)
4##################################
5# width : entry Widgetの幅を設定する。デフォルト20。
6self.entryName = tk.Entry(frame, width=30)
以下の画像のようにentry Widgetを描画します。
cursor
cursor optionを利用すると、entry Widget内へマウスカーソルを移動すると矢印の見た目を変化できます。
見た目のバリエーションについてはこちらのサイトにまとまっていますので、ご確認ください。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更して、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, cursor="clock") or self.entryName.configure(width=15, cursor="clock")
4##################################
5self.entryName = tk.Entry(frame, width=15, cursor="clock")
entry Widget内へマウスカーソルを移動すると、矢印の見た目が変更します。
font
font optionを利用すると、文字の形式や大きさを変更できます。
fontに関しては、Tkinterで使われるフォントって?2種類のフォントの設定方法を丁寧に解説でまとめておりますので、詳しく知りたい方は是非ご確認ください。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, font=("", 20, "underline")) or self.entryName.configure(width=15, font=("", 20, "underline"))
4##################################
5# fontについて : https://kuroro.blog/python/RZNjLl36upkumxwkTRWl/
6self.entryName = tk.Entry(frame, width=15, font=("", 20, "underline"))
以下の画像のようにentry Widgetを描画します。
fg, foreground
fg option, foreground optionを利用すると、文字列色を変更できます。
fgとforeground両方のoptionを用いて、値を設定した場合、後ろの引数に設定されるoptionが優先されます。
色に関しては、Tkinterの色の使い方とは?活用例から色の一覧をまとめて紹介!?で総括していますので、詳しく知りたい方は是非ご確認ください。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, fg="red") or self.entryName.configure(width=15, fg="red")
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, fg="red")
以下の画像のようにentry Widgetを描画します。
background, bg
background option, bg optionを利用すると、entry Widgetの背景色を設定できます。
backgroundとbg両方のoptionを用いて、値を設定した場合、後ろの引数に設定されるoptionが優先されます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, bg="red") or self.entryName.configure(width=15, bg="red")
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, bg="red")
以下の画像のようにentry Widgetを描画します。
relief
relief optionを設定すると、entry Widgetの枠のデザインを設定できます。
指定方法としては、
- tk.RAISED
- tk.SUNKEN
- tk.FLAT
- tk.RIDGE
- tk.GROOVE
- tk.SOLID
の6種類があります。
例えば下準備コードを、以下のように変更すると、
1+ reliefList = [tk.RAISED, tk.SUNKEN, tk.FLAT, tk.RIDGE, tk.GROOVE, tk.SOLID]
2+ for relief in reliefList:
3- self.entryName = tk.Entry(frame, width=15)
4+ self.entryName = tk.Entry(frame, width=10, relief=relief, bd=5)
5
6- self.entryName.pack()
7+ self.entryName.pack(side=tk.LEFT)
8- self.entryName.insert(0, "氏名")
以下の画像のようにentry Widgetを描画します。
relief optionはそもそも枠がなければ、効果を発揮できません。relief optionの設定に合わせて、borderwidth or bd optionを1以上に設定して利用しましょう。
justify
justify optionを利用すると、entry Widget内で入力される文字列を、どちらに揃えるか設定できます。
指定方法としては、
- tk.LEFT : 左寄せ(デフォルト)
- tk.CENTER : 中央寄せ
- tk.RIGHT : 右寄せ
の3種類があります。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, justify=tk.RIGHT) or self.entryName.configure(width=15, justify=tk.RIGHT)
4##################################
5self.entryName = tk.Entry(frame, width=15, justify=tk.RIGHT)
以下の画像のようにentry Widgetを描画します。
state
state optionを利用すると、entry Widgetの状態を設定できます。
指定できる値としては、
- normal : entry Widget(テキストボックス)への入力を有効(デフォルト)
- disabled : entry Widget(テキストボックス)への入力を無効。entry widget(テキストボックス)へカーソルをあてられない。
- readonly : entry Widget(テキストボックス)への入力を無効。entry widget(テキストボックス)へカーソルはあてられる。
があります。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, state="readonly") or self.entryName.configure(width=15, state="readonly")
4##################################
5self.entryName = tk.Entry(frame, width=15, state="readonly")
以下の画像のようにentry Widgetを描画します。
disabledbackground, disabledforeground
disabledbackground option, disabledforeground optionを利用すると、それぞれentry Widgetの状態(state)がdisabledの時の、背景色・文字列色を設定できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, state="disabled", disabledbackground="red") or self.entryName.configure(width=15, state="disabled", disabledbackground="red")
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, state="disabled", disabledbackground="red")
以下の画像のようにentry Widgetを描画します。
show
show optionを利用すると、入力内容の表示を、指定する文字列へ変換できます。パスワードなどセキュリティに関する入力項目へ、show optionが有効です。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, show="*") or self.entryName.configure(width=15, show="*")
4##################################
5self.entryName = tk.Entry(frame, width=15, show="*")
以下の画像のようにentry Widgetを描画します。
入力内容は保持されているので、表示される内容に対してのみ変換が行われていると考えると良いでしょう。入力内容の取得は、のちに紹介します、get()関数を利用するとうまくいきます。
exportselection
exportselection optionを利用すると、カーソルを使って選択された文字列を、データとして記憶させるべきか設定できます。
値としてboolean(True, False)の指定が可能で、デフォルトではTrue(データとして記憶する)が設定されます。
下準備コードを以下のように変更し、
1 def getPassword(self):
2+ # selection_get() : 現在entry Widget(テキストボックス)内で選択中の文字列を返す。文字列が選択されていない、exportselectionがFalseの場合は、以下のエラーが表示される。
3+ # _tkinter.TclError: PRIMARY selection doesn't exist or form "STRING" not defined
4+ print(self.entryPassword.selection_get())
5
6 def __init__(self, master=None):
7- self.entryPassword = tk.Entry(frame, width=15)
8+ # exportselection=Falseへ変更する。
9+ self.entryPassword = tk.Entry(frame, width=15, exportselection=False)
「パスワード確認」ボタンをクリックすると、# _tkinter.TclError: PRIMARY selection doesn't exist or form "STRING" not defined
のエラーがターミナルに表示されます。
selectbackground
selectbackground optionを利用すると、entry Widget内で選択される文字列の、背景色を設定できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, selectbackground="red") or self.entryName.configure(width=15, selectbackground="red")
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, selectbackground="red")
以下の画像のようにentry Widgetを描画します。
selectforeground
selectforeground optionを利用すると、entry Widget内で選択される文字列色を設定できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, selectforeground="red") or self.entryName.configure(width=15, selectforeground="red")
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, selectforeground="red")
以下の画像のようにentry Widgetを描画します。
selectborderwidth
selectborderwidth optionを利用すると、entry Widget内で入力される文字列の選択幅を設定できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, selectborderwidth=50) or self.entryName.configure(width=15, selectborderwidth=50)
4##################################
5self.entryName = tk.Entry(frame, width=15, selectborderwidth=50)
以下の画像のようにentry Widgetを描画します。
highlightcolor, highlightbackground, highlightthickness
highlightcolor option, highlightbackground option, highlightthickness optionを利用すると、それぞれフォーカスがあてられた時の囲い線の色, フォーカスが外れた時の囲い線の色, 囲い線の太さを設定できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, highlightbackground="green", highlightthickness=20) or self.entryName.configure(width=15, highlightbackground="green", highlightthickness=20)
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, highlightbackground="green", highlightthickness=20)
以下の画像のようにentry Widgetを描画します。
また下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, highlightcolor="blue", highlightthickness=20) or self.entryName.configure(width=15, highlightcolor="blue", highlightthickness=20)
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, highlightcolor="blue", highlightthickness=20)
7# entry Widgetへフォーカスを与える。
8self.entryName.focus()
以下の画像のようにentry Widgetを描画します。
insertbackground
insertbackground optionを利用すると、カーソルの背景色を変更できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, insertbackground="red") or self.entryName.configure(width=15, insertbackground="red")
4##################################
5# 色について : https://kuroro.blog/python/YcZ6Yh4PswqUzaQXwnG2/
6self.entryName = tk.Entry(frame, width=15, insertbackground="red")
以下の画像のようにentry Widgetを描画します。
insertwidth
insertwidth optionを利用すると、カーソルの幅を変更できます。
例えば下準備コードのself.entryName = tk.Entry(frame, width=15)
箇所を、以下のように変更すると、
1# 別解法 ##########################
2# self.entryName = tk.Entry(frame)
3# self.entryName.config(width=15, insertbackground="red", insertwidth=10) or self.entryName.configure(width=15, insertbackground="red", insertwidth=10)
4##################################
5self.entryName = tk.Entry(frame, width=15, insertbackground="red", insertwidth=10)
以下の画像のようにentry Widgetを描画します。
xscrollcommand
xscrollcommand optionに関しては、Tkinterで使われるscrollbarとは?活用事例を交えて徹底解説の「その他のWidgetを使った、scrollbar Widgetサンプル集」でまとめておりますので、是非ご確認ください。
入力制限に関するoption
入力制限に関するoption(invalidcommand, invcmd, validate, validatecommand, vcmd)に関しては、【コード付】Tkinterのentryを使った入力制限の方法をお伝えしますでまとめておりますので、是非ご確認ください。
entryで活用される3種類の関数
entryで活用される関数として、
- insert
- get
- delete
の3種類が存在します。順に見ていきましょう。
insert
insert関数を利用すると、entry(テキストボックス)内に、文字列を挿入できます。
1# 第一引数 : 文字列の挿入開始位置(0からスタート)
2# 第二引数 : 挿入文字列
3# ※ entry Widgetのstate optionが'disabled' or 'readonly'の場合に利用できない。
4.insert(数字, "文字列")
で定義されます。戻り値はありません。
例えば下準備コードのself.entryPassword.insert(0, "パスワード")
箇所の下で、以下のようなコードを追加すると、
1 self.entryPassword.insert(0, "パスワード")
2+ # 第一引数 : 文字列の挿入開始位置(0からスタート)
3+ # 第二引数 : 挿入文字列
4+ self.entryPassword.insert(2, "アイウエオ")
以下の画像のようにentry Widgetを描画します。
get
get関数を利用すると、entry(テキストボックス)内に入力される文字列を取得できます。
1.get()
で定義されます。戻り値として、entry(テキストボックス)内に入力される文字列を取得できます。
例えば下準備コードのself.entryPassword.insert(0, "パスワード")
箇所の下で、以下のようなコードを追加すると、
1 self.entryPassword.insert(0, "パスワード")
2+ print(self.entryPassword.get())
以下の画像のように「パスワード」の文字列を取得できます。
delete
delete関数を利用すると、entry(テキストボックス)内に入力される文字列を削除できます。
1# 単数文字を削除する場合
2# 第一引数 : 削除する文字位置(0からスタート)
3# ※ entry Widgetのstate optionが'disabled' or 'readonly'の場合に利用できない。
4.delete(数字)
5
6# 複数文字を削除する場合
7# 第一引数 : 削除する文字列の開始位置(0からスタート)
8# 第二引数 : 削除する文字列の終わり位置
9# ※ entry Widgetのstate optionが'disabled' or 'readonly'の場合に利用できない。
10.delete(数字, 数字)
で定義されます。戻り値はありません。
例えば下準備コードのself.entryPassword.insert(0, "パスワード")
箇所の下で、以下のようなコードを追加すると、
1 self.entryPassword.insert(0, "パスワード")
2+ self.entryPassword.delete(0)
以下の画像のようにentry Widgetを描画します。
また下準備コードのself.entryPassword.insert(0, "パスワード")
箇所の下で、以下のようなコードを追加すると、
1 self.entryPassword.insert(0, "パスワード")
2+ self.entryPassword.delete(1, 3)
以下の画像のようにentry Widgetを描画します。
まとめ
- Tkinterは、Window, Frame, Widgetで構成される。
- Tkinterで利用されるentryとは、Widgetの一種でWebページやアプリの会員登録、お問い合わせ画面などで利用されるテキストボックスを意味します。
- 別名entry Widgetと呼ばれる。