TUTORIAL

Tkinter チュートリアル - テキストボックス

Tkinter チュートリアル - テキストボックス

このページの内容

Tkinter Entry ウィジェットを使用すると、ユーザーは 1つのフォントタイプのみを含む 1 行のテキストを入力できます。

多くの行が必要な場合は、Tkinter Text ウィジェットを使用する必要があります。Entry ウィジェットを使用して、単一行のテキストを表示します。こともできます。

Tkinter テキストボックスの例

import tkinter as tk
from tkinter import ttk


def callbackFunc():
    resultString.set("{} - {}".format(landString.get(), cityString.get()))


app = tk.Tk()
app.geometry("200x100")

labelLand = tk.Label(app, text="Country")
labelLand.grid(column=0, row=0, sticky=tk.W)
labelCity = tk.Label(app, text="City")
labelCity.grid(column=0, row=1, sticky=tk.W)

landString = tk.StringVar()
cityString = tk.StringVar()
entryLand = tk.Entry(app, width=20, textvariable=landString)
entryCity = tk.Entry(app, width=20, textvariable=cityString)

entryLand.grid(column=1, row=0, padx=10)
entryCity.grid(column=1, row=1, padx=10)

resultButton = tk.Button(app, text="Get Result", command=callbackFunc)

resultButton.grid(column=0, row=2, pady=10, sticky=tk.W)

resultString = tk.StringVar()
resultLabel = tk.Label(app, textvariable=resultString)
resultLabel.grid(column=1, row=2, padx=10, sticky=tk.W)

app.mainloop()

この例では、ユーザーが国名と都市名を入力できる GUI を作成し、Get Result ボタンがクリックされた後に入力された情報を表示します。

Tkinter Tutorial_Entry Basic

entryLand = tk.Entry(app, width=20, textvariable=landString)

Tkinter Entry ウィジェットの例を作成しました。幅は 20 文字単位です。入力ボックスには 20 文字しか表示できませんので、テキスト行が 20 文字を超える場合は、矢印を使ってテキストを移動して残りのテキストを表示します。必要があります。

Entry ウィジェットのテキストは、Tkinter 文字列変数 landString に割り当てられます。landString.get() メソッドでテキストを取得し、landString.set() メソッドでテキストを設定できます。set() メソッドを使用すると、入力ボックスのテキストが自動的に更新されます。

注意
StringVar の get() メソッドの他に、ウィジェットオブジェクトの get() メソッドを使用 Entry して、Entry ボックス内の文字列を取得することもできます。

Tkinter テキストボックスのデフォルトテキスト

Entry ウィジェットのテキストを設定するには 2つの方法があります。

set() メソッドで Tkinter の Entry デフォルトテキストを設定する

上記の例で示したように、StringVar の set() メソッドを使用して、Tkinter Entry のデフォルトテキストを設定することができます。

例えば、

landString.set("Netherlands")

デフォルトのテキストを次のように Netherlands 設定します

insert() メソッドで Tkinter の Entry デフォルトテキストを設定する

insert(index, string) メソッド string は、指定された index 位置にテキストを挿入します。index が END である場合、テキストを Entry ウィジェットを追加します。

entryLand.insert(tk.END, "Netherlands")

デフォルトのテキストを Netherlands に設定します。

注意
index がウィジェットの既存の文字列の長さよりも大きい場合、insert(END, string) と同じ効果があります。