Select Tkinter 的日期范围
Select date range with Tkinter
我正在尝试制作一个 tkinter 应用程序,用户可以在其中 select 一个日期范围。
Tkcalendar 库只允许 select 1 天,有没有办法 select 连续多天?
非常感谢
您可以创建两个日历,然后选择两个日期,然后找出这两个日期之间的范围。核心功能是:
def date_range(start,stop): # Start and stop dates for range
dates = [] # Empty list to return at the end
diff = (stop-start).days # Get the number of days between
for i in range(diff+1): # Loop through the number of days(+1 to include the intervals too)
day = first + timedelta(days=i) # Days in between
dates.append(day) # Add to the list
if dates: # If dates is not an empty list
return dates # Return it
else:
print('Make sure the end date is later than start date') # Print a warning
现在从 tkinter
的角度来看,按钮回调不能 return
任何东西,所以这应该是这样的:
from tkinter import *
import tkcalendar
from datetime import timedelta
root = Tk()
def date_range(start,stop):
global dates # If you want to use this outside of functions
dates = []
diff = (stop-start).days
for i in range(diff+1):
day = start + timedelta(days=i)
dates.append(day)
if dates:
print(dates) # Print it, or even make it global to access it outside this
else:
print('Make sure the end date is later than start date')
date1 = tkcalendar.DateEntry(root)
date1.pack(padx=10,pady=10)
date2 = tkcalendar.DateEntry(root)
date2.pack(padx=10,pady=10)
Button(root,text='Find range',command=lambda: date_range(date1.get_date(),date2.get_date())).pack()
root.mainloop()
请记住,列表中充满了日期时间对象,要单独列出完整的日期字符串,请说:
dates = [x.strftime('%Y-%m-%d') for x in dates] # In the format yyyy-mm-dd
我正在尝试制作一个 tkinter 应用程序,用户可以在其中 select 一个日期范围。 Tkcalendar 库只允许 select 1 天,有没有办法 select 连续多天?
非常感谢
您可以创建两个日历,然后选择两个日期,然后找出这两个日期之间的范围。核心功能是:
def date_range(start,stop): # Start and stop dates for range
dates = [] # Empty list to return at the end
diff = (stop-start).days # Get the number of days between
for i in range(diff+1): # Loop through the number of days(+1 to include the intervals too)
day = first + timedelta(days=i) # Days in between
dates.append(day) # Add to the list
if dates: # If dates is not an empty list
return dates # Return it
else:
print('Make sure the end date is later than start date') # Print a warning
现在从 tkinter
的角度来看,按钮回调不能 return
任何东西,所以这应该是这样的:
from tkinter import *
import tkcalendar
from datetime import timedelta
root = Tk()
def date_range(start,stop):
global dates # If you want to use this outside of functions
dates = []
diff = (stop-start).days
for i in range(diff+1):
day = start + timedelta(days=i)
dates.append(day)
if dates:
print(dates) # Print it, or even make it global to access it outside this
else:
print('Make sure the end date is later than start date')
date1 = tkcalendar.DateEntry(root)
date1.pack(padx=10,pady=10)
date2 = tkcalendar.DateEntry(root)
date2.pack(padx=10,pady=10)
Button(root,text='Find range',command=lambda: date_range(date1.get_date(),date2.get_date())).pack()
root.mainloop()
请记住,列表中充满了日期时间对象,要单独列出完整的日期字符串,请说:
dates = [x.strftime('%Y-%m-%d') for x in dates] # In the format yyyy-mm-dd