Есть ли какой-либо стандартный способ приложений tkinter, позволяющий пользователю выбирать дату?
Как создать сборщик дат в tkinter?
Ответ 1
Нет, Tk не включает виджет выбора даты. Есть несколько виджетов календаря Python, которые вы могли бы попробовать:
http://svn.python.org/projects/sandbox/trunk/ttk-gsoc/samples/ttkcalendar.py
Ответ 2
Не так далеко, как я мог найти. Для тех, кто хочет сделать это в будущем:
Я использовал tkSimpleDialog и ttkcalendar.py (с изменениями этого SO post), чтобы сделать CalendarDialog. Эти три файла доступны на моем github.
Ниже приведен код в CalendarDialog.py:
import Tkinter
import ttkcalendar
import tkSimpleDialog
class CalendarDialog(tkSimpleDialog.Dialog):
"""Dialog box that displays a calendar and returns the selected date"""
def body(self, master):
self.calendar = ttkcalendar.Calendar(master)
self.calendar.pack()
def apply(self):
self.result = self.calendar.selection
# Demo code:
def main():
root = Tkinter.Tk()
root.wm_title("CalendarDialog Demo")
def onclick():
cd = CalendarDialog(root)
print cd.result
button = Tkinter.Button(root, text="Click me to see a calendar!", command=onclick)
button.pack()
root.update()
root.mainloop()
if __name__ == "__main__":
main()
Ответ 3
Нет, но вы можете получить его от пользователя как элемент datetime из форматированной строки.
Пример:
import datetime
userdatestring = '2013-05-10'
thedate = datetime.datetime.strptime(userdatestring, '%Y-%m-%d')
Отъезд http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior. Это удобно, хотя и не самый удобный способ получения даты.