Tkinter 文字輸入控制元件

Tkinter 文字輸入控制元件-Entry 控制元件允許使用者輸入只有一種字型型別的單行文字。如果需要更多行,則應使用 TkinterText 控制元件。 Entry 控制元件也可用於顯示單行文字。

Tkinter Entry 文字輸入控制元件示例

Tkinter Entry_Basic.py
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 文字輸入控制元件例子

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

它建立了一個 TkinterEntry 控制元件例項,其寬度為 20 個字元單位。它只能在輸入框中顯示 20 個字元,因此,如果文字行超過 20 個字元,則需要使用箭頭來移動文字來顯示剩餘的文字。

Entry 控制元件的文字被分配給 Tkinter 字串變數 landString。您可以使用 landString.get() 方法獲取文字,並使用 landString.set() 方法設定文字。如果使用 set() 方法,則輸入框中的文字會自動更新。

Note
除了 StringVarget() 方法外,你還可以用 Entry 控制元件物件的 get() 方法來得到 Entry 裡面輸入的文字。

Tkinter Entry 文字輸入控制元件預設文字

我們有兩種方法來設定 Entry 預設文字,

set() 方法來設定 Tkinter Entry 控制元件預設文字

如上例所示,您可以使用 StringVarset() 方法來設定 TkinterEntry 的預設文字。

例如,

landString.set("Netherlands")

它會將預設文字設定為 Netherlands

insert() 方法來設定 Tkinter Entry 控制元件預設文字

insert(index,string) 方法在給定的 index 位置插入文字 string。如果 indexEND,它會將文字附加到 Entry 控制元件。

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

它將預設文字設定為 Netherlands

Note
如果 Index 比控制元件中已有的文字長度要長的話,那它就跟 insert(END, string) 的效果相同。