使用 Tkinter 选择日期范围

流浪者

我正在尝试制作一个 tkinter 应用程序,用户可以在其中选择日期范围。Tkcalendar库只允许选择1天,有没有办法选择连续的多个天?

非常感谢

酷云

您可以创建两个日历,然后选择两个日期,然后找到这两个日期之间的范围。核心功能是:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章