我正在使用tkinter在Python中创建图形用户应用程序。对于日期选择器,我为此使用tkCalendar中的Date Entry。要求是限制用户选择将来的日期。在这种情况下,我该如何实现?
Python 3.7版
tkCalendar版本1.3.1
答案 0 :(得分:2)
对于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()
答案 1 :(得分:1)
您可以结合使用set_date
和DateEntry
中的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()