Как получить дату с помощью 4-значного объекта year или date / datetime из метода get_date в tkcalendar.Календарь?

#python #tkinter #tkcalendar

#python #tkinter #tkcalendar

Вопрос:

Код, который у меня есть в настоящее время, приведен как таковой, и в основном то, что я хочу сделать в конце этого, — это получить объект datetime, который я буду использовать для запроса к базе данных.

 from tkcalendar import *
from datetime import datetime
from datetime import date

def capture():
    sample = cal.get_date()
    print(sample)
    print(type(sample))

cal = Calendar(root, selectmode='day', year=2020, month=11, day=22)#just default
cal.pack(pady=20)

myButton = Button(root,text='See Date',command=capture)
myButton.pack(pady = 20)
 

Когда я запускаю этот код и выбираю случайную дату, print(sample) показывает 11/11/20 и print(type(sample)) показывает <class 'str'>
Я хочу, чтобы этот метод или какой-либо другой метод получал дату с 4-значным годом вместо этого, чтобы я мог разобрать ее в объект date или datetime, потому что я буду работать с датами прошлых и будущих веков. Или, если я могу просто напрямую получить объект date или datetime, это тоже было бы хорошо. Как мне это сделать?

Ответ №1:

Вам нужно передать date_pattern параметр в Calendar(...) :

 cal = Calendar(root, selectmode='day', year=2020, month=11, day=22, date_pattern="m/d/y")
 

Комментарии:

1. Большое спасибо, это тоже работает. Я только что использовал класс DateEntry, потому что метод get_date() для DateEntry возвращает datetime. экземпляр даты вместо строки, поэтому мне не нужно выполнять синтаксический анализ строки для даты. Но в любом случае спасибо

Ответ №2:

Я только что понял это. Вместо использования класса Calendar я использовал класс DateEntry. В основном просто замените cal = Calendar(root, selectmode='day', year=2020, month=11, day=22) на cal = DateEntry(root, selectmode='day', year=2020, month=11, day=22) , оставив все остальное идентичным. Мне также больше нравится формат. Спасибо тем, кто ответил