我们如何限制Python中tkCalender日期条目选择器的将来日期选择?

时间:2018-12-28 14:08:55

标签: python-3.x tkinter

我正在使用tkinter在Python中创建图形用户应用程序。对于日期选择器,我为此使用tkCalendar中的Date Entry。要求是限制用户选择将来的日期。在这种情况下,我该如何实现?

Python 3.7版

tkCalendar版本1.3.1

2 个答案:

答案 0 :(得分:2)

对于tkcalendar> = 1.5.0,现在可以使用mindatemaxdate选项来限制可用日期的范围。因此,以下代码阻止用户选择将来的日期:

from tkcalendar import DateEntry
from datetime import date
import tkinter as tk
today = date.today()
root = tk.Tk()
d = DateEntry(root, maxdate=today)
d.pack()
root.mainloop()

答案 1 :(得分:1)

您可以结合使用set_dateDateEntry中的root.after()方法来控制用户输入。

import tkinter as tk
from tkcalendar import DateEntry
from datetime import datetime
from tkinter import messagebox

root = tk.Tk()
time_now = datetime.now()
calendar = DateEntry(root, width=12, background='darkblue',foreground='white', borderwidth=2)
calendar.pack()

def date_check():
    calendar_date = datetime.strptime(calendar.get(),"%m/%d/%y")
    if calendar_date > time_now:
        messagebox.showerror("Error", "Selected date must not exceed current date")
        calendar.set_date(time_now)
    root.after(100,date_check)

root.after(100,date_check)

root.mainloop()