在本文中,將介紹如何使用 tkinter Entry 小部件。tkinter Entry 小部件允許創(chuàng)建能夠輸入的單行文本框。
要?jiǎng)?chuàng)建 Entry 單行文本框,請按如下方式使用構(gòu)造函數(shù):
textbox = tk.Entry(master, **options)
通常,將 Entry 單行文本框輸入的當(dāng)前值與 StringVar 對象相關(guān)聯(lián)。
創(chuàng)建 Entry 單行文本框
import tkinter as tk
root = tk.Tk()
root.geometry('300x200+200+200')
root.title('entry 單行文本框演示')
text = tk.StringVar()
entry = tk.Entry(
root,
textvariable=text,
)
entry.pack(padx=10, pady=10, expand=True)
root.mainloop()
![](http://image109.360doc.com/DownloadImg/2024/10/0808/289338906_2_20241008080305569_wm.png)
獲取文本框內(nèi)容
要將 Entry 單行文本框中的當(dāng)前文本作為字符串獲取,可以使用 get() 方法。
import tkinter as tk
root = tk.Tk()
root.geometry('300x200+200+200')
root.title('entry 單行文本框演示')
def print_entry():
entry_text=entry.get()
print(entry_text)
text = tk.StringVar()
entry = tk.Entry(
root,
textvariable=text,
)
entry.pack(padx=10, pady=10, expand=True)
button = tk.Button(
root,
text="輸出",
command=print_entry
)
button.pack(ipadx=5, ipady=5, expand=True)
root.mainloop()
![](http://image109.360doc.com/DownloadImg/2024/10/0808/289338906_3_20241008080305663_wm.png)
以上示例中,創(chuàng)建一個(gè)按鈕,用于將 Entry 單行文本框的文本內(nèi)容輸出到 shell。
單行文本框獲取焦點(diǎn)
為了提供更好的用戶體驗(yàn),可以讓窗口中的第一個(gè)單行文本框自動(dòng)獲得焦點(diǎn),直接接受用戶輸入??梢允褂?focus() 方法。
作為密碼輸入框使用
要在單行文本框上輸入時(shí)隱藏敏感信息,例如密碼,可以添加參數(shù):show='*'
。輸入密碼時(shí),它不會顯示實(shí)際字符,而是顯示參數(shù)中指定的星號。
import tkinter as tk
root = tk.Tk()
root.geometry('300x200+200+200')
root.title('entry 單行文本框演示')
text = tk.StringVar()
entry = tk.Entry(
root,
textvariable=text,
show='*'
)
entry.pack(padx=10, pady=10, expand=True)
entry.focus()
root.mainloop()
![](http://image109.360doc.com/DownloadImg/2024/10/0808/289338906_4_20241008080305772_wm.png)
其他可選參數(shù)及方法
bd : 邊框大小。默認(rèn)值為 2 像素。
justify :文本對齊方式: CENTER、LEFT 或 RIGHT。
delete(index)方法:從文本框中刪除給定索引的字符。
insert(index,'name')方法:在給定索引處插入字符串。
只讀文本框
如果希望顯示的文本可以選擇和復(fù)制但不能修改,可以將文本框設(shè)置為只讀。這在用戶需要能夠查看數(shù)據(jù),還有保證數(shù)據(jù)完整性時(shí)非常有用。
import tkinter as tk
root = tk.Tk()
root.geometry('300x200+200+200')
root.title('entry 單行文本框演示')
text = tk.StringVar()
entry = tk.Entry(
root,
textvariable=text,
)
entry.insert(0, "該文字只讀!")
entry.config(state='readonly')
entry.pack(padx=10, pady=10, expand=True)
root.mainloop()
![](http://image109.360doc.com/DownloadImg/2024/10/0808/289338906_5_20241008080305897_wm.png)
文本框文本校驗(yàn)
如果想限制文本框文本類型的輸入,可以通過驗(yàn)證來執(zhí)行此操作。例如,一個(gè)只接受整數(shù)文本框??梢允褂脜?shù) validatecommand、validate等檢查其有效性。
以下示例中,文本框只接受數(shù)字輸入,不能輸入其他字符。
import tkinter as tk
root = tk.Tk()
root.geometry('300x200+200+200')
root.title('entry 單行文本框演示')
def callback(input):
return input.isdigit()
text = tk.StringVar()
reg = root.register(callback)
entry = tk.Entry(root, textvariable=text, width=30, validate="key", validatecommand=(reg, '%P'))
entry.pack(padx=10, pady=10, expand=True)
root.mainloop()
登錄窗口示例
import tkinter as tk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.geometry('300x200+200+200')
root.title('登錄窗口演示')
email = tk.StringVar()
password = tk.StringVar()
def login_clicked():
msg = f'電子郵件:{email.get()}\n 密碼:{password.get()}'
showinfo(title='登錄信息', message=msg)
email_label = tk.Label(root, text="電子郵件:")
email_label.pack(pady=10)
email_entry = tk.Entry(root, textvariable=email, width=30)
email_entry.pack()
email_entry.focus()
password_label = tk.Label(root, text="密碼:")
password_label.pack()
password_entry = tk.Entry(root, textvariable=password, width=30, show="*")
password_entry.pack()
login_button = tk.Button(root, text="登錄", command=login_clicked, width=30)
login_button.pack(pady=10)
root.mainloop()
![](http://image109.360doc.com/DownloadImg/2024/10/0808/289338906_6_2024100808030638_wm.png)