Tkinter Focusout输入验证

2024-10-02 10:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里看到了一些关于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()

关于如何验证电子邮件输入有什么想法吗?在


Tags: keyimportremastertkinter电子邮件选项条目
1条回答
网友
1楼 · 发布于 2024-10-02 10:28:46

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

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

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

相关问题 更多 >

    热门问题