我有以下代码来阻止人们输入任何内容或输入带有数字的姓名。它有效,但我希望每次有人输入数字时都会添加一条消息,但是当它们什么都不输入时我想添加消息。 我该怎么做呢。
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()
答案 0 :(得分:1)
在while
循环中添加:
if re.match('\d+', player_one_name):
# your message
答案 1 :(得分:0)
更好地遇到正数和负数将以下内容添加到您的代码中:正则表达式r'\d'
仅匹配从0
到9
的单个数字但是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()