def chkDay(x, size, part):
dayre = re.compile('[0-3][0-9]') # day digit 0-9
if (dayre.match(x)):
if (len(x) > size):
return tkMessageBox.showerror("Warning", "This "+ part +" is invalid")
app.destroy
else:
tkMessageBox.showinfo("OK", "Thanks for inserting a valid "+ part)
else:
tkMessageBox.showerror("Warning", part + " not entered correctly!")
root.destroy
#when clicked
chkDay(vDay.get(),31, "Day")
#interface of tkinter
vDay = StringVar()
Entry(root, textvariable=vDay).pack()
问题:
- 不验证,我可以输入大于 31 的一天,它仍然显示:OK
- 当我调用 root.destroy 时,root(应用程序)没有关闭
请您参考如下方法:
用正则表达式验证日期很困难。您可以使用以下来源的一些模式:http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5&AspxAutoDetectCookieSupport=1
请记住,检查年份是否为闰年特别困难,例如日期 2011-02-29 是否有效?
我认为最好使用专门的函数来解析和验证日期。您可以使用 datetime 模块中的 strptime()。
