Python输入验证

时间:2017-08-08 18:42:45

标签: python python-3.x tkinter

我有以下代码来阻止人们输入任何内容或输入带有数字的姓名。它有效,但我希望每次有人输入数字时都会添加一条消息,但是当它们什么都不输入时我想添加消息。 我该怎么做呢。

from tkinter import *

import tkinter.simpledialog

player_one_name=""

def createGUI():
    global player_one_name

    diceWindow = Tk()


    while player_one_name=='' or player_one_name is None or not re.match("^[A-z]*$", player_one_name):
        player_one_name=tkinter.simpledialog.askstring("Player Name","Please enter your name: ")

createGUI()

4 个答案:

答案 0 :(得分:1)

while循环中添加:

if re.match('\d+', player_one_name):
    # your message

答案 1 :(得分:0)

更好地遇到正数和负数将以下内容添加到您的代码中:正则表达式r'\d'仅匹配从09的单个数字但是r'-?\d+'应与正面和负面相匹配。

if re.match(r'-?\d+', player_one_name):
   print("your message")

或者更直接地使用isdigit()。这种方式更具可读性

if any(i.isdigit() for i in player_one_name):
  print("your message")

答案 2 :(得分:0)

def num_there(s):          返回任何(i中的i的i.isdigit())

这种函数可用于查看字符串中是否有num。然后,您可以使用某种if语句,如:

if (num_there(playername)):
       print("no nums allowed")

答案 3 :(得分:0)

我会使用一个简单的for循环和一些if语句来自己验证名称。

我有一个链接到用于验证名称的方法的按钮。

此方法获取输入字段的内容,然后检查它是否包含任何数字。如果是,则将变量valid设置为False,以下if语句将执行所需的结果。

我只检查数字,但你可以检查任何东西。

看看下面的代码:

import tkinter as tk

class App(tk.Frame):

    def __init__(self, master):
        self.master = master
        lbl1 = tk.Label(self.master, text = "Type a name and press enter")
        lbl1.pack()
        self.entry1 = tk.Entry(self.master)
        self.entry1.pack()
        btn1 = tk.Button(self.master, text = "Enter", command = self.validate_name)
        btn1.pack()

    def validate_name(self):
        name = self.entry1.get()
        valid = True

        if name != "":
            for i in name:
                if i in "0123456789":
                    valid = False

            if valid == True:
                print("{} is a good name!".format(name))
            else:
                print("No numbers are allowed")

if __name__ == "__main__":

    root = tk.Tk()
    myapp = App(root)
    root.mainloop()