Entry 單行輸入框
Entry 是 tkinter 裡用來讓使用者進行輸入資料的「單行輸入框」,這篇教學會介紹如何在 tkinter 視窗裡加入 Entry 單行輸入框,並實作輸入資料後進行互動的程式。
快速導覽:
因為 Google Colab 不支援 tkinter,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。
加入 Entry
建立 tkinter 視窗物件後,透過 Entry 方法,就能在視窗物件中建立 Entry 單行輸入框,必要的參數有一個,第一個表示要加入的視窗物件,建立 Entry 後再使用 pack() 方法將其加入 ( 參考 pack 參數設定 ),下方的程式碼執行後,會在視窗裡加入一個 Entry ( 位置、大小和顏色都使用預設值 )。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
entry = tk.Entry(root) # 放入單行輸入框
entry.pack()
root.mainloop()
Entry 參數設定
加入 Entry 之後,可以透過 Entry 的參數調整內容的樣式,下方列出 Entry 和其他元件相同的參數:
參數 | 說明 |
---|---|
width | 寬度,單位是字元數。 |
height | 高度,單位是字元數。 |
padx | 內容和標籤左右邊界的間距 ( px ),預設 1。 |
pady | 內容和標籤上下邊界的間距 ( px ),預設 1。 |
bg/background | 背景顏色,可以使用十六進位色碼或顏色名稱。 |
fg/foreground | 文字顏色,可以使用十六進位色碼或顏色名稱。 |
font | 字型設定,包含字體、大小 ( px )、粗體 ( bold )、斜體 ( italic )。 |
justify | 多行文字的對齊方式,可以設定 left、right、center,預設 center。 |
cursor | 滑鼠移動到標籤的樣式,可以設定 arrow、circle、cross、plus...等,預設 arrow。 |
relief | 邊框樣式,可以設定 flat、sunken、raised、groove、ridge、solid,預設 flat。 |
bd/borderwidth | 邊框粗細,預設 1。 |
textvariable | 文字內容的變數名稱,如果變數被修改,文字就會發生變化。 |
wraplength | 一段文字超過多少寬度 ( px ) 會換行。 |
下方是 Entry 單行輸入框行為相關的參數:
參數 | 說明 |
---|---|
show | 指定顯示的字元為某個符號,例如輸入密碼,可以指定 show='*',輸入的內容就會變成星號。 |
selectborderwidth | 選取輸入框內容的外框寬度。 |
selectbackground | 選取輸入框內容的背景顏色。 |
selectforeground | 選取輸入框內容的文字顏色。 |
xscrollcommand | 與 set() 方法搭配,加上水平捲軸。 |
state | 狀態,tk.NORMAL 可使用 ( 預設 )、tk.DISABLED 不可使用。 |
Entry 內容操作方法
透過下列方法,可以取得或刪除 Entry 單行輸入框的內容,或針對內容進行一些相關操作:
方法 | 參數 | 說明 |
---|---|---|
get() | 取得輸入框的內容。 | |
delete() | first, last=None | 指定刪除 first~last 區間的內容。 |
icursor() | index | 移動輸入標記到指定內容索引值。 |
index() | index | 取得指定的索引值。 |
insert() | index, s | 在指定索引的位置插入內容。 |
select_adjust() | index | 選取索引值位置和之前的內容。 |
select_clear() | 清空輸入欄位內容。 | |
select_from() | index | 設定選取的位置。 |
select_present() | 如果有選取則回傳 True,否則 False。 | |
select_range() | start, end | 回傳 start~end 範圍內的值。 |
select_to() | index | 選擇指定索引值的內容。 |
xview() | index | 如果文字過長,指定要看到哪個索引值。 |
xview_scroll() | number, what | 捲動捲軸到指定位置。 |
即時顯示輸入文字
下方的程式碼放入一個 Label 和一個 Entry,兩個元件都使用 textvariable 共用變數 a,執行後當輸入框內容發生改變,Label 的內容也會跟著變化。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
a = tk.StringVar() # 建立文字變數
a.set('') # 一開始設定沒有內容
tk.Label(root, textvariable=a).pack() # 放入 Label
tk.Entry(root, textvariable=a).pack() # 放入 Entry
root.mainloop()
點選按鈕,顯示輸入文字
除了可以即時顯示文字,也可以使用 Button 元件,設定點擊按鈕後,再顯示輸入文字,同時也可搭配 delete 方法,設計點擊按鈕後清空輸入欄位的內容。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
a = tk.StringVar()
b = tk.StringVar()
a.set('')
def show():
a.set(b.get()) # 顯示輸入的文字
def clear():
b.set('') # 設定變數 b 為空字串
entry.delete(0,'end') # 清空輸入欄位內容
label = tk.Label(root, textvariable=a) # 放入標籤
label.pack()
entry = tk.Entry(root, textvariable=b) # 放入輸入欄位 ( 變數為 b )
entry.pack()
btn1 = tk.Button(root, text='顯示', command=show) # 放入顯示按鈕,點擊後執行 show 函式
btn1.pack()
btn2 = tk.Button(root, text='清除', command=clear) # 放入清空按鈕,點擊後執行 clear 函式
btn2.pack()
root.mainloop()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~