我正在使用 tkinter 在 Python 中创建一个图形用户应用程序。对于日期选择器,我为此目的使用 tkCalendar 的日期输入。要求是限制用户选择未来的日期。在这种情况下,我怎样才能做到这一点?
Python 3.7 版
tkCalendar 版本 1.3.1
我正在使用 tkinter 在 Python 中创建一个图形用户应用程序。对于日期选择器,我为此目的使用 tkCalendar 的日期输入。要求是限制用户选择未来的日期。在这种情况下,我怎样才能做到这一点?
Python 3.7 版
tkCalendar 版本 1.3.1
对于 tkcalendar >= 1.5.0,现在可以使用mindate
和maxdate
选项限制可用日期的范围。所以下面的代码阻止用户选择未来的日期:
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()
您可以使用set_date
fromDateEntry
组合的方法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()