我在这里看到了几个关于tkinter条目验证的问题,但是每个问题似乎都坚持validate="key"选项。
虽然这对于交互验证很好,但我想要的是一个"focusout"验证。
更特别的是,我希望验证一个电子邮件字段。这是我到目前为止尝试过的代码,但不起作用。
import Tkinter as tk
import re
master = tk.Tk()
def validateEmail(P):
x = re.match(r"[^@]+@[^@]+\.[^@]+", P)
return (x != None)
vcmd = (master.register(validateEmail), '%P')
emailentry = tk.Entry(master, validate="focusout", validatecommand=vcmd)
emailentry.pack()
b = tk.Button(master, text="Login")
b.pack()
tk.mainloop()关于如何验证电子邮件条目,有什么想法吗?
发布于 2013-08-26 19:57:15
%S表示插入的字符串(如果有的话)。这仅对文本插入的验证有意义。当小部件失去焦点时,将不会插入任何字符,因此该参数将始终是一个空字符串。因为它是一个空字符串,所以它总是无法通过验证。
您应该使用%P,它代表整个字符串。
此外,严格地说,验证函数应该返回一个布尔值而不是一个对象。应该将匹配结果保存在变量中,然后返回类似于return (match is not None)的内容。
https://stackoverflow.com/questions/18451508
复制相似问题