使用tkin进行入口验证

2024-04-26 10:04:27 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图输入一些东西,它只是去无效块,不让我进入任何关键。我明白,我可以通过使用其他选项“焦点”、“焦点输出”等来摆脱它,但我希望它与键一起工作:

from tkinter import *
import re

def validate_email(P):
   # master.errormsg.config(text='')
   x = re.match(r"[^@]+@[^@]+\.[^@]+", P)
   print(P)
   errormsg.config(text='')
   emailentry.focus_set()
   return x != None


def invalid_email(P):
    errormsg.config(text='Invalid Email Address')
    emailentry.focus_set()

if __name__ == '__main__':
    master = Tk()
    errormsg = Label(master,text='', fg='red')
    errormsg.pack()
    L1 = Label(master, text='Enter Email Address')
    L1.pack(side=LEFT)
    vcmd = (master.register(validate_email), '%P')
    invcmd = (master.register(invalid_email), '%P')
    emailentry = Entry(master, validate="focusout", validatecommand=vcmd,  
    invalidcommand=invcmd)
    emailentry.pack()
    Button(master, text="Login").pack()
    master.mainloop()

Tags: textimportremasterconfigemaildefvalidate
1条回答
网友
1楼 · 发布于 2024-04-26 10:04:27

我自己也是一个初学者,但在运行代码和调试时,当您使用“key”时,输入字段会获取您当前在键盘上按下的键的值。你的两个函数正在评估值,每次都会失败,因为它不是电子邮件地址。你知道吗

如果您在控制台中查看,您可以看到print(p)正在打印出您当时碰巧按下的任何一个键。你知道吗

相关问题 更多 >