Comment créer un capteur de date dans tkinter?

Existe-t-il un moyen standard pour que les applications tkinter permettent à l'utilisateur de choisir une date?

28
demandé sur MKaras 2010-12-14 23:20:27

5 réponses

Non, Tk n'inclut pas de widget date picker. Il y a quelques widgets de calendrier Python que vous pouvez essayer:

http://svn.python.org/projects/sandbox/trunk/ttk-gsoc/samples/ttkcalendar.py

http://effbot.org/zone/wcklib-calendar.htm

17
répondu Nicholas Riley 2010-12-14 20:34:39

ce n'est Pas pour autant que je pouvais trouver. Pour quelqu'un qui veut le faire à l'avenir:

j'ai utilisé tkSimpleDialog et ttkcalendar.py(avec des modifications de DONC post) pour en faire un CalendarDialog. Les versions modifiées des trois fichiers sont disponibles sur mon github.

ci-dessous est le code dans mon 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()
7
répondu Moshe 2018-10-05 18:23:13

Non, mais vous pouvez l'obtenir auprès de l'utilisateur comme un datetime élément d'une chaîne formatée..

Exemple:

import datetime

userdatestring = '2013-05-10'
thedate = datetime.datetime.strptime(userdatestring, '%Y-%m-%d') 

Check out http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior