tkinter输入框日期验证
你好,我想确保用户在输入框中只能输入日期。我对数据库中的通配符搜索有一些了解,所以我尝试了这个;
from tkinter import *
window=Tk()
def Validate():
if Entry1.get() == ('**/**/****'):
window2=Tk()
label2= Label(window2,text = 'Successful')
label2.pack()
else:
window3=Tk()
label3 = Label(window3,text = 'Failed')
label3.pack()
Entry1 = Entry(window)
Entry1.pack()
label1 = Label(window, text = "Please enter date")
label1.pack()
submitbutton = Button(window, text = "Submit")
submitbutton.pack()
submitbutton.configure(command=Validate)
但显然这样不行,有什么好主意吗?谢谢!
1 个回答
0
如果你想要真正的验证,这可不是一行代码就能搞定的。你需要检查两个方面:数字的位数和一个实际存在的过去日期。对于数字的位数,我会用split()
把用户输入的日期字符串分割成一个列表,然后逐个检查每个部分,确保每个部分都是1) 整数,并且 2) 长度为2。
在确认日期格式正确后,你可以使用Python的time
模块来检查这个日期是否是以前存在的日期(可以参考这个链接:http://docs.python.org/3.2/library/time.html)。在这个例子中,systemDate
表示当前时间,类型是struct_time
对象,而你可以用strptime
函数把用户输入的日期转换成同样类型的对象,以便进行比较:
>>> from time import strptime, struct_time, localtime
>>> systemDate = struct_time(localtime())
>>> userDate = strptime('01/02/03', '%m/%d/%y')
>>> userDate < systemDate
True
希望这能帮到你。