立即学习: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()