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
ボタンがクリックされた後に入力された情報を表示します。
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)
と同じ効果があります。