Bonjour,

Je débute avec wxPython et là, je suis en train d'étudier la possibilité de créer un sélecteur de date.
En voici le code:
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
#-------------------------------------------------------------------------------
# Name:        Calendar_Panel
# Purpose:     Test de wx.lib.calendar depuis wxPython
#              montre les weekends et le jours fériés en différentes couleurs
# Author:
#
# Created:     13/08/2013
# Copyright:
# Licence:     GPL
#-------------------------------------------------------------------------------
# -*- coding: UTF-8 -*-
from __future__ import unicode_literals
import wx
import wx.lib.calendar
 
class Calendar_Panel(wx.Panel):
    """ crée un panel avec un calendar"""
    def __init__(self, parent, id):
        # create a panel
        wx.Panel.__init__(self, parent, id)
 
        # cree un label sur le panel
        self.label1 = wx.StaticText(self, id, "", wx.Point(25, 220))
 
        # cree le calendar
        self.cal = wx.lib.calendar.Calendar(self, id, pos=(25, 35), size=(200, 180))
 
        # va chercher l'anée et le mois courant
        start_month = self.cal.GetMonth()
        start_year = self.cal.GetYear()
 
        # set des couleurs
        self.SetBackgroundColour("#DEB887")
        self.cal.SetWeekColor('#FFFFFF', '#0000FF')
        self.cal.SetColor(wx.lib.calendar.COLOR_WEEKEND_FONT, '#FF0000')
        self.cal.SetColor(wx.lib.calendar.COLOR_WEEKEND_BACKGROUND, '#D3D3D3')
        self.cal.ShowWeekEnd()
 
        # couleur des fériés
        self.set_days = holidays[start_month]
        self.cal.AddSelect(self.set_days, '#FF0000', '#FFFF00')
        self.cal.Refresh()
 
        # click de la souris sur un jour
        self.Bind(wx.lib.calendar.EVT_CALENDAR, self.OnCalSelected)
 
        # cree le selecteur d'année
        self.texty = wx.TextCtrl(self, -1, str(start_year), pos=(25, 10), size=(50, -1))
        h = self.texty.GetSize().height
        self.spiny = wx.SpinButton(self, -1, pos=(70, 10), size=(h*2, h))
        self.spiny.SetRange(2010, 2050) # laps de temps
        self.spiny.SetValue(start_year)
        self.Bind(wx.EVT_SPIN, self.OnSpiny, self.spiny)
 
        # cree le selecteur de mois
        self.textm = wx.TextCtrl(self, -1, str(start_month), pos=(140, 10), size=(50, -1))
        h = self.textm.GetSize().height
        self.spinm = wx.SpinButton(self, -1, pos=(185, 10), size=(h*2, h))
        self.spinm.SetRange(1, 12)
        self.spinm.SetValue(start_month)
        self.Bind(wx.EVT_SPIN, self.OnSpinm, self.spinm)
 
    def OnCalSelected(self, evt):
        text = "Date sélectionnée = %02d/%02d/%d" % (evt.day, evt.month, evt.year)
        laDate= "%02d/%02d/%d" % (evt.day, evt.month, evt.year) #uniquement la date
        self.label1.SetLabel(text)
 
 
    def OnSpiny(self, event):
        year = event.GetPosition()
        self.texty.SetValue(str(year))
        self.cal.SetYear(year)
        self.ResetDisplay()
 
    def OnSpinm(self, event):
        month = event.GetPosition()
        self.textm.SetValue(str(month))
        self.cal.SetMonth(month)
        self.ResetDisplay()
 
    def ResetDisplay(self):
        # reset de la couleur des fériés (quand on change de mois ou d'année)
        self.cal.AddSelect(self.set_days, 'black', 'white')
        # va chercher le numero du mois
        month = self.cal.GetMonth()
        set_days = holidays[month]
        # set de la nouvelle couleur de fériés
        self.cal.AddSelect(set_days, 'red', 'white')
        self.cal.Refresh()
        # garde la nouvelle liste en memoire
        self.set_days = set_days
 
 
# ici les dates des fériés
# ce sont UNIQUEMENT les jours fériés FIXES
# {mois: [liste des jours]}
holidays = {
1: [1],
2: [],
3: [],
4: [],
5: [1],
6: [],
7: [21],
8: [15],
9: [],
10: [],
11: [1, 11],
12: [25, 31]
}
 
app = wx.App()
# cree une frame, sans parent, -1 pour default ID
frame = wx.Frame(None, -1, "Simple calendrier", size = (260, 280))
# instanciation de classe
Calendar_Panel(frame, -1)
frame.Show(1)
 
 
app.MainLoop()
A présent, lorsque je clique sur une date, celle-ci s'affiche dans le panel_Calendar, mais je voudrais pouvoir récupérer la valeur "laDate" pour pourvoir l'utiliser ailleurs, c-à-d, pour pouvoir utiliser cette date pour créer un evenement via une autre classe.
Mon problème, c'est que je ne sais comment faire

Merci d'avance de vos réponses,

Pierre