Вы можете использовать метод 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()