IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

saisie de date a partir de calendrier [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut saisie de date a partir de calendrier
    Bonjour à tous

    je suis débutant et je cherche à faire la chose suivante:
    appuyer sur un bouton un calendrier en langue française s'affiche avec date du jour active
    puis quand j'appuis sur une date je veux récupérer cette date alors je ne sais pas si python offre une chose pareille

    sinon j'ai trouvé un script qui permet d'afficher un calendrier alors je n'arrive pas à faire les choses suivantes :
    1) le rendre en français
    2)date du jour active
    3)récupérer la date suite à un clic sourie

    voici le code trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    """
    Simple calendar using ttk Treeview together with calendar and datetime
    classes.
    """
    import calendar
     
    try:
        import Tkinter
        import tkFont
    except ImportError: # py3k
        import tkinter as Tkinter
        import tkinter.font as tkFont
     
    import ttk
     
    def get_calendar(locale, fwday):
        # instantiate proper calendar class
        if locale is None:
            return calendar.TextCalendar(fwday)
        else:
            return calendar.LocaleTextCalendar(fwday, locale)
     
    class Calendar(ttk.Frame):
        # XXX ToDo: cget and configure
     
        datetime = calendar.datetime.datetime
        timedelta = calendar.datetime.timedelta
     
        def __init__(self, master=None, **kw):
            """
            WIDGET-SPECIFIC OPTIONS
     
                locale, firstweekday, year, month, selectbackground,
                selectforeground
            """
            # remove custom options from kw before initializating ttk.Frame
            fwday = kw.pop('firstweekday', calendar.MONDAY)
            year = kw.pop('year', self.datetime.now().year)
            month = kw.pop('month', self.datetime.now().month)
            locale = kw.pop('locale', None)
            sel_bg = kw.pop('selectbackground', '#ecffc4')
            sel_fg = kw.pop('selectforeground', '#05640e')
     
            self._date = self.datetime(year, month, 1)
            self._selection = None # no date selected
     
            ttk.Frame.__init__(self, master, **kw)
     
            self._cal = get_calendar(locale, fwday)
     
            self.__setup_styles()       # creates custom styles
            self.__place_widgets()      # pack/grid used widgets
            self.__config_calendar()    # adjust calendar columns and setup tags
            # configure a canvas, and proper bindings, for selecting dates
            self.__setup_selection(sel_bg, sel_fg)
     
            # store items ids, used for insertion later
            self._items = [self._calendar.insert('', 'end', values='')
                                for _ in range(6)]
            # insert dates in the currently empty calendar
            self._build_calendar()
     
            # set the minimal size for the widget
            self._calendar.bind('<Map>', self.__minsize)
     
        def __setitem__(self, item, value):
            if item in ('year', 'month'):
                raise AttributeError("attribute '%s' is not writeable" % item)
            elif item == 'selectbackground':
                self._canvas['background'] = value
            elif item == 'selectforeground':
                self._canvas.itemconfigure(self._canvas.text, item=value)
            else:
                ttk.Frame.__setitem__(self, item, value)
     
        def __getitem__(self, item):
            if item in ('year', 'month'):
                return getattr(self._date, item)
            elif item == 'selectbackground':
                return self._canvas['background']
            elif item == 'selectforeground':
                return self._canvas.itemcget(self._canvas.text, 'fill')
            else:
                r = ttk.tclobjs_to_py({item: ttk.Frame.__getitem__(self, item)})
                return r[item]
     
        def __setup_styles(self):
            # custom ttk styles
            style = ttk.Style(self.master)
            arrow_layout = lambda dir: (
                [('Button.focus', {'children': [('Button.%sarrow' % dir, None)]})]
            )
            style.layout('L.TButton', arrow_layout('left'))
            style.layout('R.TButton', arrow_layout('right'))
     
        def __place_widgets(self):
            # header frame and its widgets
            hframe = ttk.Frame(self)
            lbtn = ttk.Button(hframe, style='L.TButton', command=self._prev_month)
            rbtn = ttk.Button(hframe, style='R.TButton', command=self._next_month)
            self._header = ttk.Label(hframe, width=15, anchor='center')
            # the calendar
            self._calendar = ttk.Treeview(show='', selectmode='none', height=7)
     
            # pack the widgets
            hframe.pack(in_=self, side='top', pady=4, anchor='center')
            lbtn.grid(in_=hframe)
            self._header.grid(in_=hframe, column=1, row=0, padx=12)
            rbtn.grid(in_=hframe, column=2, row=0)
            self._calendar.pack(in_=self, expand=1, fill='both', side='bottom')
     
        def __config_calendar(self):
            cols = self._cal.formatweekheader(3).split()
            self._calendar['columns'] = cols
            self._calendar.tag_configure('header', background='grey90')
            self._calendar.insert('', 'end', values=cols, tag='header')
            # adjust its columns width
            font = tkFont.Font()
            maxwidth = max(font.measure(col) for col in cols)
            for col in cols:
                self._calendar.column(col, width=maxwidth, minwidth=maxwidth,
                    anchor='e')
     
        def __setup_selection(self, sel_bg, sel_fg):
            self._font = tkFont.Font()
            self._canvas = canvas = Tkinter.Canvas(self._calendar,
                background=sel_bg, borderwidth=0, highlightthickness=0)
            canvas.text = canvas.create_text(0, 0, fill=sel_fg, anchor='w')
     
            canvas.bind('<ButtonPress-1>', lambda evt: canvas.place_forget())
            self._calendar.bind('<Configure>', lambda evt: canvas.place_forget())
            self._calendar.bind('<ButtonPress-1>', self._pressed)
     
        def __minsize(self, evt):
            width, height = self._calendar.master.geometry().split('x')
            height = height[:height.index('+')]
            self._calendar.master.minsize(width, height)
     
        def _build_calendar(self):
            year, month = self._date.year, self._date.month
     
            # update header text (Month, YEAR)
            header = self._cal.formatmonthname(year, month, 0)
            self._header['text'] = header.title()
     
            # update calendar shown dates
            cal = self._cal.monthdayscalendar(year, month)
            for indx, item in enumerate(self._items):
                week = cal[indx] if indx < len(cal) else []
                fmt_week = [('%02d' % day) if day else '' for day in week]
                self._calendar.item(item, values=fmt_week)
     
        def _show_selection(self, text, bbox):
            """Configure canvas for a new selection."""
            x, y, width, height = bbox
     
            textw = self._font.measure(text)
     
            canvas = self._canvas
            canvas.configure(width=width, height=height)
            canvas.coords(canvas.text, width - textw, height / 2 - 1)
            canvas.itemconfigure(canvas.text, text=text)
            canvas.place(in_=self._calendar, x=x, y=y)
     
        # Callbacks
     
        def _pressed(self, evt):
            """Clicked somewhere in the calendar."""
            x, y, widget = evt.x, evt.y, evt.widget
            item = widget.identify_row(y)
            column = widget.identify_column(x)
     
            if not column or not item in self._items:
                # clicked in the weekdays row or just outside the columns
                return
     
            item_values = widget.item(item)['values']
            if not len(item_values): # row is empty for this month
                return
     
            text = item_values[int(column[1]) - 1]
            if not text: # date is empty
                return
     
            bbox = widget.bbox(item, column)
            if not bbox: # calendar not visible yet
                return
     
            # update and then show selection
            text = '%02d' % text
            self._selection = (text, item, column)
            self._show_selection(text, bbox)
     
        def _prev_month(self):
            """Updated calendar to show the previous month."""
            self._canvas.place_forget()
     
            self._date = self._date - self.timedelta(days=1)
            self._date = self.datetime(self._date.year, self._date.month, 1)
            self._build_calendar() # reconstuct calendar
     
        def _next_month(self):
            """Update calendar to show the next month."""
            self._canvas.place_forget()
     
            year, month = self._date.year, self._date.month
            self._date = self._date + self.timedelta(
                days=calendar.monthrange(year, month)[1] + 1)
            self._date = self.datetime(self._date.year, self._date.month, 1)
            self._build_calendar() # reconstruct calendar
     
        # Properties
     
        @property
        def selection(self):
            """Return a datetime representing the current selected date."""
            if not self._selection:
                return None
     
            year, month = self._date.year, self._date.month
            return self.datetime(year, month, int(self._selection[0]))
     
    def test():
        import sys
        root = Tkinter.Tk()
        root.title('Ttk Calendar')
        ttkcal = Calendar(firstweekday=calendar.SUNDAY)
        ttkcal.pack(expand=1, fill='both')
     
        if 'win' not in sys.platform:
            style = ttk.Style()
            style.theme_use('clam')
     
        root.mainloop()
     
    if __name__ == '__main__':
        test()
    est ce possible de me donner un coup de main sur ces points
    merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut
    j'ai trouvé comment récupérer la date
    il me reste comment rendre le calendrier en francais
    comment activer le jour à l'ouverture du calendrier
    merci d'avance

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Vous avez une bibliothèque sur Pypi qui est (un peu) mieux documentée avec des exemples.
    Pour ce qui est des dates en français cela se fait via le paramètre locale.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Vous avez une bibliothèque sur Pypi qui est (un peu) mieux documentée avec des exemples.
    Pour ce qui est des dates en français cela se fait via le paramètre locale.

    - W
    je n'arrive pas à installer tkcalendar
    j’accède au prompt je tape pip install tkcalendar
    j'ai un message pip n'est pas reconnue en tant que commande interne

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Citation Envoyé par THCH66 Voir le message
    j'ai un message pip n'est pas reconnue en tant que commande interne
    Essayez avec "python -m pip install..." où "python" est a remplacer par la commande qui lance l'environnement python dans lequel vous voulez installer la bibliothèque.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Essayez avec "python -m pip install..." où "python" est a remplacer par la commande qui lance l'environnement python dans lequel vous voulez installer la bibliothèque.

    - W
    j'ai déjà essayer de faire mais ça ne marche pas
    je vais laisser tomber le premier code je suis de nouveau a la recherche d'un script de fonction qui renvoie la date quand on clic dans un calendrier pour pouvoir l’insérer dans un Entry

  7. #7
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    924
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 924
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par THCH66 Voir le message
    je n'arrive pas à installer tkcalendar
    j’accède au prompt je tape pip install tkcalendar
    j'ai un message pip n'est pas reconnue en tant que commande interne
    Vraisemblablement, pip n'est pas installé dans ton espace de travail ..

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2020
    Messages : 67
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Vraisemblablement, pip n'est pas installé dans ton espace de travail ..
    bonjour,
    enfin j'ai réussi à installer tkcalender
    j'utilise DateEntry de tkcalender
    est ce qu'il y a un moyen pour rendre l'affichage du calendrier en langue français
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/05/2013, 16h54
  2. Intégrer des calendriers pour les champs de saisie des dates
    Par xaviermfx dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 25/07/2012, 00h21
  3. [Calendrier] afficher une date textuel à partir d'une entrée "date"
    Par Djsarkndp dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 26/03/2009, 12h22
  4. Un calendrier graphique pour la saisie des dates
    Par kam81 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 29/12/2007, 11h30
  5. problème saisie des Dates à partir d'un calendrier
    Par girlworld86 dans le forum IHM
    Réponses: 4
    Dernier message: 23/06/2007, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo