首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter Focusout条目验证

Tkinter Focusout条目验证
EN

Stack Overflow用户
提问于 2013-08-26 19:24:09
回答 1查看 3.3K关注 0票数 1

我在这里看到了几个关于tkinter条目验证的问题,但是每个问题似乎都坚持validate="key"选项。

虽然这对于交互验证很好,但我想要的是一个"focusout"验证。

更特别的是,我希望验证一个电子邮件字段。这是我到目前为止尝试过的代码,但不起作用。

代码语言:javascript
复制
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()

关于如何验证电子邮件条目,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-26 19:57:15

%S表示插入的字符串(如果有的话)。这仅对文本插入的验证有意义。当小部件失去焦点时,将不会插入任何字符,因此该参数将始终是一个空字符串。因为它是一个空字符串,所以它总是无法通过验证。

您应该使用%P,它代表整个字符串。

此外,严格地说,验证函数应该返回一个布尔值而不是一个对象。应该将匹配结果保存在变量中,然后返回类似于return (match is not None)的内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18451508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档