晚上得空繼續來記錄 Tkinter GUI 軟體開發的小技巧, 本篇是常見的一種 Entry 元件的功能, 即點擊Entry 輸入框時自動消除裡面的預設值或輸入提示語. 下面以簡化的登入畫面為例說明, 使用 pack 排版依序將帳號與密碼兩個 Entry 輸入框與登入按鈕放入視窗中.
import tkinter as tk
from tkinter import ttk
root=tk.Tk()
root.title('點擊 Entry 清除內容測試')
root.geometry('300x150')
def clear_account_entry(event): # 清除帳號框內容
account_entry.delete(0, tk.END) # 刪除開頭與結尾索引之間的 (全部) 內容
def clear_password_entry(event): # 清除密碼框內容
password_entry.delete(0, tk.END) # 刪除開頭與結尾索引之間的 (全部) 內容
def login():
pass
account=tk.StringVar()
account_entry=tk.Entry(root, textvariable=account)
account_entry.insert(0, '請輸入帳號')
account_entry.bind('<Button-1>', clear_account_entry)
account_entry.pack()
password=tk.StringVar()
password_entry=tk.Entry(root, textvariable=password)
password_entry.insert(0, '請輸入密碼')
password_entry.bind('<Button-1>', clear_password_entry)
password_entry.pack()
login_btn=ttk.Button(root, text='登入', command=login)
login_btn.pack()
root.mainloop()
此處兩個 Entry 元件都呼叫 bind() 方法監聽滑鼠左鍵的按一下鈕 (Button-1) 事件, 並綁定事件處理函式. 在事件處理函式中, 呼叫 Entry 物件的 delete(0, tk.END) 方法即可刪除 Entry 內預設值或先前輸入的內容, 結果如下 :
點擊 Entry 輸入框時預設值 "請輸入 ..." 就會自動清空, 方便我們直接輸入內容 :
沒有留言:
張貼留言