验证 tkinter 输入框中的数据。如果它是数字或字母或电子邮件

verifying data inside tkinter entry box. if its numeric or alpha or an email

from tkinter import *
import os
te=Tk()
te.geometry('300x200')
L1 = Label(text = "User Name").grid(row=1,column=0)
E1 = Entry( te)
E1.grid(row=1,column=2)
L2 = Label(text="full Name").grid(row=2,column=0)
E2 = Entry( te)
E2.grid(row=2,column=2)
L3 = Label(text="email").grid(row=3,column=0)
E3 = Entry( te)
E3.grid(row=3,column=2)
L4 = Label(text="admission no.").grid(row=4,column=0)
E4 = Entry(te)
E4.grid(row=4,column=2)
def adduser():
    add=open(E1.get(),"a+")
    add.write(E2.get()+":")
    add.write(E3.get()+":")
    add.write(E4.get()+":")
    add.write(E1.get())
    add.close()
    B5.config(state="disabled")
    print('registraion susscefull')
    B6=Button(text="  login  ",command=main)
    B6.grid(row=5,column=1)
def main():
    os.system("main.py")
B5=Button(text="register",command=adduser)
B5.grid(row=5,column=1)
te.mainloop()

你好程序员,我需要一些验证方面的帮助 tkinter 所以这就是我需要的:

  1. 没有 space 应该在用户名中并且至少使用 1 个号码
  2. 应检查电子邮件 ID 是否使用了 @ 和 .com
  3. 录取人数只能是整数
  4. 全名只能是字母

我试过了但没有成功,现在你们是我最后的希望了。请帮忙。我仍在学习并期待您的帮助和代码。

谢谢,祝你有愉快的一天。

看看这个例子:

from tkinter import *
from tkinter import messagebox

root = Tk()

def check(): #function to check 
    if '@' not in e2.get() or '.com' not in e2.get(): #if @ or .com is present
        messagebox.showinfo('Not a valid email address','Enter a valid email address')
    else: #if not show error message
        messagebox.showinfo('Success','Succesfull!')

e2 = Entry(root)
e2.pack(padx=10,pady=10)

b = Button(root,text='Check mail',command=check)
b.pack(padx=10,pady=10)

root.mainloop()

在此示例中,提供了一个简单的检查来检查其中是否包含“@”或“.com”。

并且,由于您询问了一种只允许字母的方法,请看一下这个简单的验证。

from tkinter import *
from tkinter import messagebox

root = Tk()

def validate(inp):
    if inp == "": #to begin typing
        return True
    elif inp.isalpha(): #to only allow alphabets
        return True
    elif ' ' in inp: #to allow space in between
        return True
    else:
        return False #dont allow anything else

vcmd = root.register(validate) #register the function

e = Entry(root,validate='all',validatecommand=(vcmd,'%S')) #now add validating to it
e.pack(padx=10,pady=10)

root.mainloop()

要更好地了解验证,请查看 Bryan Oakley 的回答 here