PythonでGUIアプリを作成できるモジュールtkinter(ティーキンター)のEntry(エントリー)の使い方について解説します。
サンプルコードはモジュールのインポートを from tkinter import *
としています。
関数を呼び出す際にパッケージ名の接頭辞 (tk.Frame()
のtk.
)を省略できるのでおすすめです。
Entryとは
Entry(エントリー)はtkinterの画面に1行分のテキストを表示・変更できるWidget(ウィジェット)です。主に文字列の入力を受け付けてイベント処理に渡す目的で使用します。
※表示だけの目的で使用しても問題ありません。
複数行のテキストを表示したい場合はTextbox(テキストボックス)を使用します。
Entryの使い方
試しにEntryを表示してみます。
下の図のように1行分の入力領域が表示され、クリックするとカーソルが点滅して文字が入力できる状態になります。
1 2 3 4 5 6 7 8 9 10 | from tkinter import * root = Tk() root.title('Entryの使い方') root.geometry('200x100') entry = Entry(root) entry.pack() root.mainloop() |
Entryのオプション一覧
Entryで指定可能なオプション一覧です。
オプション | 説明 | 値の形式 |
---|---|---|
bg (background) | 背景色 (デフォルトはwhite) | 色名または16進数カラーコード |
fg (foreground) | 文字色 | 色名または16進数カラーコード |
relief | 枠線タイプ (デフォルトはsunken) | flat, solid, groove, raised, ridge, sunken |
bd (borderwidth) | 枠線の幅 (デフォルトは1px) | ピクセル値 |
width | Entryの幅 (デフォルトは20) | フォントタイプ・サイズによる |
font | テキストのフォントタイプ・サイズ | タプル(フォント名, サイズ) |
justify | 文字の配置位置 (デフォルトはLEFT) | LEFT, CENTER, RIGHT |
state | 有効・無効・読取り専用状態を設定 | normal, disabled, readonly |
disabledbackground | 無効状態時の背景色 | 色名または16進数カラーコード |
disabledforeground | 無効状態時の文字色 | 色名または16進数カラーコード |
readolnlybackground | 読取り専用時の背景色 | 色名または16進数カラーコード |
cursor | マウスオーバー時のカーソルタイプ | カーソルタイプ |
textvariable | 文字列を動的に変化させる場合に使用 | StringVarクラスのインスタンスを指定 |
takefocus | タブキーでEntryにフォーカスするか指定 (デフォルトはTrue) | True, False |
highlightcolor | フォーカス時の枠線の色 | 色名または16進数カラーコード |
highlightbackground | フォーカスされていない時の線の色 | 色名または16進数カラーコード |
highlightthickness | フォーカス時、フォーカスされていない時の枠線の太さ | ピクセル値 |
insertbackground | 挿入カーソルの色 | 色名または16進数カラーコード |
insertwidth | 挿入カーソルの幅 (デフォルトは2px) | ピクセル値 |
insertborderwidth | カーソルrelief形状の幅 (値を設定するとraisedのような外観に変更) | |
insertontime | 挿入カーソル点滅のONの時間を設定 デフォルトは600 | ミリ秒 |
insertofftime | 挿入カーソル点滅のOFFの時間を設定 デフォルトは300 | ミリ秒 |
selectbackground | 選択範囲に使用する背景色 | 色名または16進数カラーコード |
selectforeground | 選択範囲に使用する前景色 | 色名または16進数カラーコード |
selectborderwidth | 選択範囲の周りに使用する境界線の幅 | ピクセル値 |
背景色(bg)
Entryの背景色を設定するには bg
(background
) を指定します。
デフォルトの背景色は白(white)です。
値は色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典
1 | entry = Entry(root, bg='pink') |
文字色(fg)
文字色を設定するにはfg
(foreground
)を指定します。
値は色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典
1 | entry = Entry(root, fg='red') |
枠線(relief, bd)
relief
で枠線を設定、bd
で枠線の太さを変更できます。bd=0
ではreleif
を設定しても、見た目に変化がありませんので注意してください。
1 2 3 4 5 6 | entry1 = Entry(root, relief='flat', bd=4) entry2 = Entry(root, relief='solid', bd=4) entry3 = Entry(root, relief='groove', bd=4) entry4 = Entry(root, relief='raised', bd=4) entry5 = Entry(root, relief='ridge', bd=4) entry6 = Entry(root, relief='sunken', bd=4) |
デフォルトは枠線タイプ:sunken 太さ:1pxです。
幅(width)
width
でEntryの幅を設定できます。
幅のサイズはピクセル値ではなく、フォントの種類やサイズによって決まります。
デフォルトは20です。
1 | entry = Entry(root, width=10) |
高さはフォントサイズにより自動的に伸縮するため指定することはできません。
どうしても変更したい場合は、pack()
などの配置メソッドのオプションipady
を指定することで変更することは可能です。
1 2 | entry = Entry(root) entry.pack(ipady=8) |
フォント設定(font)
フォントの種類とサイズを変更するにはfont
をタプル(フォント名, サイズ)で指定します。
1 | entry = Entry(root, font=('MS P明朝', 12)) |
幅(width)の設定でも説明したように、使用するフォントタイプやサイズによってEntryの幅が自動で伸縮します。
文字の配置位置(justify)
justify
で文字を入力した時の寄せ方向を指定できます。
1 | entry = Entry(root, justify=CENTER) |
状態を指定(state)
state
でEntryの有効・無効状態を指定できます。
・normal:通常状態(デフォルト)
・disabled:無効状態
・readonly:読み取り専用
1 | entry = Entry(root, state='disabled') |
readonlyは無効状態に似ていますが、文字列の選択・コピーは可能になります。
下図のように文字入力後に入力無効にした後、文字列はコピーできるようしておきたい場合等に利用できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | from tkinter import * def btn_click(): entry['state']='readonly' root = Tk() root.title('Entryの使い方') root.geometry('200x100') entry = Entry(root) button = Button(root, text='ボタン', command=btn_click) entry.pack() button.pack() |
ボタンの使用方法については以下の記事を参照してください。
・関連記事:【Python/tkinter】Button(ボタン)の使い方
無効状態時の背景色・文字色(disabledbackground, disabledforeground)
state='disabled'
の時の背景色と文字色を、それぞれdisabledbackground
, disabledforeground
で設定できます。
値は色名か16進数カラーコードを指定します。
・参考サイト:色の名前とカラーコードが一目でわかるWEB色見本 原色大辞典
1 | entry = Entry(root, disabledbackground='grey',disabledforeground='white') |
読取り専用時の背景色(readonlybackground)
state='readonly'
の時の背景色をreadonlybackground
で設定できます。
1 | entry = Entry(root, readonlybackground='skyblue') |
カーソル(cursor)
cursor
を指定するとマウスオーバーした時のカーソルタイプを変更できます。
1 | entry = Entry(root, cursor='hand2') |
カーソルのタイプは全部で75個ありますが、実際に使えそうなものは限られています。
以下がサンプルになります。全タイプを確認したい場合はこちらのサイトで確認できます。
アイコン | タイプ |
---|---|
arrow | |
center_ptr | |
circle | |
crosshair | |
draft_large | |
draft_small | |
left_ptr | |
hand1 | |
hand2 | |
tcross | |
top_left_arrow | |
X_cursor |
文字列を動的に変更(textvariable)
textvariable
を指定することで、ボタンに表示する文字列を動的に変化させることができます。
設定値は、StringVarクラスのインスタンスを参照する変数を指定します。
下の例では、ボタンを押した時にEntryに入力された文字をラベルに表示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | from tkinter import * # ボタンクリック時に動作させる関数 def btn_click(): label['text']=entry_text.get() root = Tk() root.title('Entryの使い方') root.geometry('200x100') # StringVarクラスのインスタンス生成 entry_text = StringVar(root) # インスタンスに文字列をセット entry_text.set('文字を入力') # EntryのtextvariableにStringVar変数を指定 entry = Entry(root, textvariable=entry_text) # ボタン・ラベルを設定 button = Button(root, text='ボタン', command=btn_click) label = Label(root, text='') # Widget配置 entry.pack() button.pack() label.pack() root.mainloop() |
フォーカス設定
タブキーを押した時にEntryにフォーカスするかを設定できます。
デフォルトはTrueです。
1 | entry = Entry(root, takefocus=False) |
フォーカス時とフォーカスしていない時の線の色と太さを設定することができます。
・フォーカス時の線の色:highlightcolor
・フォーカスしていない時の線の色: highlightbackground
・枠線の太さ:highlightthickness
1 2 3 4 | entry = Entry(root, highlightcolor='red', highlightbackground='grey', highlightthickness=2) |
挿入カーソルの装飾
挿入カーソルの色、幅、形状を変更することができます。
形状はinsertborderwidth
を0より大きい値に設定するとraisedのような立体形状に変更されます。
・挿入カーソルの色:insertbackground
・挿入カーソルの幅:insertwidth
・カーソルrelief形状の幅:insertborderwidth
1 | entry = Entry(root, insertbackground='blue', insertwidth=5, insertborderwidth=20) |
選択範囲の設定
テキスト選択時の選択範囲の装飾を変更することができます。
装飾は背景色、文字色、挿入カーソルの太さを設定できます。
背景色:selectbackground
文字色:selectforeground
挿入カーソルの太さ:selectborderwidth
1 2 3 | entry = Entry(root, selectbackground='green', selectforeground='white', selectborderwidth=5) |
以上でEntryの使い方の解説は終了です。
以下の記事も参考にしてみて下さい。
・関連記事:PythonでGUIアプリを作成する(tkinter)
・関連記事:【Python/tkinter】Label(ラベル)の使い方
・関連記事:【Python/tkinter】Button(ボタン)の使い方
・関連記事:【Python/tkinter】Canvas(キャンバス)の使い方