Tkinter: テキストボックス(Entry)の作成・配置・フォントサイズ

PythonのTkinterでテキストボックスを作成する場合は、 Entryウィジェットを使用します。

ここではテキストボックスの作成・配置から、 フォントサイズの変更、テキストボックスの内容の取得・設定、 最後にボタンとテキストボックスを連動させる サンプルコードを紹介します。

Entryウィジェットのオプションやメソッドについては 以下のオンラインマニュアルが参考になります。
The Entry widget(Tkinter オンラインマニュアル)

テキストボックス(Entry)の作成・配置

ウィンドウにテキストボックス(Entry)を一つ作成し、 配置します。 配置にはplace()メソッドを使用して、 位置やサイズを設定してます。

import tkinter as tk

# ウィンドウ作成
root = tk.Tk()

# ウィンドウサイズ
root.geometry("300x200")

# テキストボックスの作成と配置
txt = tk.Entry(root)
txt.place(x=20, y=20, width=150, height=30)

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

実行結果は次の通りです。

テキストボックス

コード解説

txt = tk.Entry(root)

Entryウィジェットの第一引数に親ウィジェットを指定します。 今回はウィンドウに直接配置するため「root」を指定しています。

txt.place(x=20, y=20, width=150, height=30)

place()メソッドでx座標、y座標、幅、高さを指定しています。

フォントサイズを変更

テキストボックスのフォントサイズを変更したい場合は, fontオプションを使用します。

# フォントサイズ指定 フォントタイプはデフォルト
fonts = ("", 14)

# テキストボックスの作成と配置
txt = tk.Entry(root, font=fonts)
txt.place(x=20, y=20, width=150, height=30)

関連記事:Tkinter: ウィジェットのフォントを指定する

内容を取得

テキストボックスの内容を取得するにはget()メソッドを使います。

txt.get()

内容をクリア

テキストボックスの内容をクリアしたい場合は、 delete()メソッドを使います。

txt.delete(0, tk.END)

第1引数は削除開始位置、第2引数は削除終了位置を指定します。 「delete(0, tk.END)」と指定することでクリアと同じ意味になります。

文字列を挿入

テキストボックスに文字列を挿入するには、 insert()メソッドを使用します。

txt.insert(tk.END, "挿入文字列")

第1引数は文字を挿入する位置、第2引数は挿入する文字列を指定します。

すでにテキストボックスに入力されている場合

すでにテキストボックスに「"a"」と入力されていて、

txt.insert(tk.END, "b")

を実行した場合、テキストボックスの内容は「"ab"」となります。

もしテキストボックスの内容を「"a"」から「"b"」に置き換えたい場合は、 一旦クリアしてから insertを実行する必要があります。

ボタンクリックでテキストボックスの内容を取得・クリアする

テキストボックスの使用例として、 ボタンをクリックしたときにテキストボックスの内容を取得・クリアする コードを紹介します。

import tkinter as tk
from tkinter import messagebox

# テキストボックスの内容を取得
def btn_copy_click():
	messagebox.showinfo("サンプル", txt.get())

# テキストボックスの内容をクリア
def btn_clear_click():
	txt.delete(0, tk.END)

# ウィンドウ作成
root = tk.Tk()

# ウィンドウサイズ
root.geometry("300x200")

# フォントサイズ指定 フォントタイプはデフォルト
fonts = ("", 12)

# テキストボックスの作成と配置
txt = tk.Entry(root, font=fonts)
txt.place(x=20, y=20, width=260, height=30)

# ボタンの作成と配置
btn_copy = tk.Button(root, text="取得", 
					font=fonts, command=btn_copy_click)
btn_copy.place(x=20, y=80, width=120, height=50)

btn_clear = tk.Button(root, text="クリア", font=fonts, 
					command=btn_clear_click)
btn_clear.place(x=150, y=80, width=120, height=50)

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

上記のコードを実行すると、 次の画面が表示されます。

テキストボックスとボタン

テキストボックスに内容を入力して左側の「取得」ボタンを押すと、 メッセージボックスにテキスト内容が表示されます。

右側の「クリア」ボタンを押すと、 テキストボックスのボックスの内容がクリアされます。

コード解説

テキストボックスの内容を取得しているのが 「txt.get()」の部分です。

# テキストボックスの内容を取得
def btn_copy_click():
	messagebox.showinfo("サンプル", txt.get())

内容をクリアしているのが「txt.delete(0, tk.END)」の部分です。

# テキストボックスの内容をクリア
def btn_clear_click():
	txt.delete(0, tk.END)
Python