#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)
, оставив все остальное идентичным. Мне также больше нравится формат. Спасибо тем, кто ответил