在tkinter输入框中验证数据如果其数字或字母或电子邮件

问题描述

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. 用户名中不能有空格,至少应使用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 Oakleys的答案here