2023年7月6日 星期四

Python 學習筆記 : Tkinter 的 Entry 點一下清除預設內容的方法

晚上得空繼續來記錄 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 輸入框時預設值 "請輸入 ..." 就會自動清空, 方便我們直接輸入內容 :




沒有留言 :