tkinter输入框日期验证

-2 投票
1 回答
3903 浏览
提问于 2025-04-17 23:11

你好,我想确保用户在输入框中只能输入日期。我对数据库中的通配符搜索有一些了解,所以我尝试了这个;

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

希望这能帮到你。

撰写回答