2

我正在使用 tkinter 在 Python 中创建一个图形用户应用程序。对于日期选择器,我为此目的使用 tkCalendar 的日期输入。要求是限制用户选择未来的日期。在这种情况下,我怎样才能做到这一点?

Python 3.7 版

tkCalendar 版本 1.3.1

4

2 回答 2

3

对于 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()
于 2020-02-13T08:33:52.367 回答
1

您可以使用set_datefromDateEntry组合的方法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()
于 2018-12-29T09:47:42.797 回答