Python 验证tkinter输入框中的日期

Python 验证tkinter输入框中的日期,python,tkinter,Python,Tkinter,嗨,我想确保用户只能在输入框中键入日期。我熟悉数据库中的通配符搜索,因此我尝试了这个方法 from tkinter import * window=Tk() def Validate(): if Entry1.get() == ('**/**/****'): window2=Tk() label2= Label(window2,text = 'Successful') label2.pack() else: win

嗨,我想确保用户只能在输入框中键入日期。我熟悉数据库中的通配符搜索,因此我尝试了这个方法

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)
但很明显这行不通,有什么想法吗?
谢谢

如果你想进行真正的验证,需要比一行多一点的工作。您需要两件事:位数和过去的实际日期。对于位数,我将
split()
用户的日期字符串放入一个列表中,然后遍历每个项目,检查每个项目1)是否为整数,2)是否具有2的
len()

在验证它是否为日期格式后,可以使用Python的
time
模块()检查它是否是以前存在的日期。在本例中,
systemDate
struct_time
对象中的当前时间,您可以使用
strptime
函数将userDate设置为相同类型的对象,以进行比较检查:

>>> from time import strptime, struct_time, localtime
>>> systemDate = struct_time(localtime())
>>> userDate = strptime('01/02/03', '%m/%d/%y')
>>> userDate < systemDate
True
>>从时间导入strtime、struct\u time、localtime
>>>systemDate=struct_time(localtime())
>>>userDate=strtime('01/02/03','%m/%d/%y')
>>>userDate

希望这能有所帮助。

定义您认为有效的日期。这听起来很愚蠢,但它可能会有所不同。任何日期有两个数字表示日,2个数字表示月,2个数字表示年,或者一个不是未来的日期,如果这不是太难的话?是一个有效的日期吗?它有2/2/2个数字,将来不会出现。