立即學習:https://edu.csdn.net/course/play/19711/343107?utm_source=blogtoedu
1.鍵盤事件:按鍵松開或者按下觸發事件的執行,一般組件要綁定鍵盤事件都是同時綁定按鍵松開(“”<KeyRelease>)和按鍵按下(“<KeyPress>”)
self.text.bind("<KeyPress>",lambda event:self.keyborad_event_handle(event))# 文本綁定鍵盤松開事件,松開執行鍵盤事件處理方法self.text.bind("<KeyRelease>",lambda event:self.keyborad_event_handle(event))
2.案例:Email的輸入驗證
本例以驗證Email郵箱是否輸入正確來示范鍵盤事件的例子,主要需要實現: 1)啟動窗體,出現提示信息 2)左鍵單擊文本后,提示信息消失 3)在文本中輸入郵箱 4)輸入格式正確則在文字標簽中給出輸入正確的提示文字,輸入錯誤也一樣
?
3.知識點:
1)text.delete("0.0","end")刪除文本的文字
2)給文本綁定單擊事件:text.bind("<Button-1>",事件)
3)修改文字標簽的內容:
StringVar、textvariable=""
self.content = tkinter.StringVar()#修改文字標簽的文字self.label_text = tkinter.Label(self.root,textvariable = self.content,font = ("微軟雅黑",15),)
4)獲取文本的內容:
self.text.get("0.0","end")
?
5)設置標簽的內容
self.content.set("內容")
?
6)正則表達式的匹配
re.match(需要滿足的正則表達式,需要驗證的字符串,re.I|re.X)#不區分大小寫
?
4.完整代碼
'''
本例以驗證Email郵箱是否輸入正確來示范鍵盤事件的例子,主要需要實現:
1)啟動窗體,出現提示信息
2)左鍵單擊文本后,提示信息消失
3)在文本中輸入郵箱
4)輸入格式正確則在文字標簽中給出輸入正確的提示文字,輸入錯誤也一樣
'''
import tkinter
import tkinter.simpledialog#簡單對話框模塊
import reEmail_patter = r"[0-9a-zA-Z]\w+@\w+\.(cn|com|com.cn)"#定義郵箱的正則表達式class Mainwindow():def __init__(self):self.root = tkinter.Tk()self.root.title("linlianqin")self.root.geometry("600x500")#-------------------創建文本-----------------self.text = tkinter.Text(self.root,width = 100,height = 20)#創建文本self.text.insert(tkinter.CURRENT,"請輸入正確的郵箱號...")#在文本當前位置插入提示信息#-----------------------給文本綁定事件-------------------#文本綁定左鍵單擊事件,左鍵單擊后,將提示信息清楚self.text.bind("<Button-1>",lambda event:self.text.delete('0.0','end'))# 文本綁定鍵盤按下事件,按下執行鍵盤事件處理方法self.text.bind("<KeyPress>",lambda event:self.keyborad_event_handle(event))# 文本綁定鍵盤松開事件,松開執行鍵盤事件處理方法self.text.bind("<KeyRelease>",lambda event:self.keyborad_event_handle(event))self.text.pack() # 顯示文本#-----------------創建文字標簽--------------------------#文字標簽用于顯示文本框上輸入的內容,要想修改標簽的文本就需要使用到tkinter.StringVar,textvariable = self.contentself.content = tkinter.StringVar()#修改文字標簽的文字self.label_text = tkinter.Label(self.root,textvariable = self.content,font = ("微軟雅黑",15),)self.label_text.pack()self.root.mainloop()#創建鍵盤事件方法def keyborad_event_handle(self,event):email = self.text.get('0.0','end')#獲得文本框上輸入的文本if re.match(Email_patter,email,re.I|re.X):#如果輸入的郵箱符合正則表達式,則顯示下面,否則顯示輸入錯誤self.content.set("郵箱格式正確,郵箱為:%s"%email)else:self.content.set("郵箱輸入錯誤!")# self.content.set(email)#將獲得文本的內容設置傳遞給content,進而傳遞給文字標簽進行顯示def main():Mainwindow()if __name__ == '__main__':main()
?