Outils pour utilisateurs

Outils du site


issue96:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
issue96:python [2015/05/24 11:24] fredphil91issue96:python [2015/05/24 11:39] (Version actuelle) fredphil91
Ligne 163: Ligne 163:
  
 Jusqu'à la prochaine fois, amusez-vous bien à coder. Jusqu'à la prochaine fois, amusez-vous bien à coder.
 +
 +====== code encadré orangé page 17 haut ======
 +
 +class Ligne(wx.Frame):
 +    def __init__(self, parent, id, TitreFenetre, DonneesEntrantes, TitreGraphe):
 +        wx.Frame.__init__(self, parent, id, TitreFenetre, size=(1024, 768))
 +        self.Bind(wx.EVT_PAINT, self.OnPaint)
 +        self.LargeurBoite = 790
 +        self.HauteurBoite = 690
 +        self.TitreGraphe = TitreGraphe
 +        self.donnees = []
 +        self.ReglerDonnees(DonneesEntrantes)
 +        self.Centre()
 +        self.Show(True)
 +
 +====== page 17 milieu ======
 +
 +modifier uniquement la 1ère ligne du code :
 +    def DessineBoite(self,dc):
 +
 +puis traduire le texte en noir (et laisser la dernière ligne en orange) :
 +
 +C'est plutôt simple. On passe le dc de la fenêtre puis on dessine 4 lignes.
 +Les paramètres de la fonction DrawLine sont :
 +
 +====== page 17 bas ======
 +
 +    def DessineAxe(self,dc):
 +        # Horizontal
 +        dc.DrawLine(60,580,700,580)
 +        # Vertical
 +        dc.DrawLine(60,580,60,80)
 +
 +====== page 18 haut ======
 +
 +    def DessineTitre(self,dc,txt):
 +        dc.SetFont(wx.Font(20,wx.DEFAULT,wx.NORMAL,wx.BOLD))
 +        dc.SetPen(wx.Pen(wx.NamedColour('black'),20))
 +        # Recupere la longueur du texte a dessiner
 +        vals = dc.GetFullTextExtent(txt)
 +        # Retourne (Largeur,hauteur,Decalage,espacementInitial)
 +        # Recupere la position gauche (x) pour centrer le texte
 +        txtleft = (self.LargeurBoite-vals[0])/2
 +        dc.DrawText(txt,txtleft,30)
 +        # Raz taille et couleur du stylo
 +        dc.SetPen(wx.Pen(wx.NamedColour('black'),2))
 +
 +====== page 18 milieu ======
 +
 +modifier juste la 1ère ligne :
 +    def DessineBarresDates(self,dc,dcount):
 +
 +====== page 18 bas ======
 +
 +modifier juste la 1ère ligne :
 +    def DessineTexteRot(self,dc,txt,x,y):
 +
 +====== page 19 haut ======
 +
 +    #==================================
 +    # Arrondi au 500 le plus proche
 +    #==================================
 +    def arrondi(self,x):
 +        return int(math.ceil(x/500.0))*500
 +
 +====== page 19 milieu ======
 +
 +    def ReglerDonnees(self,DonneesAUtiliser):
 +        if type(DonneesAUtiliser[1]) is tuple:
 +            self.ListeDates=[]
 +            self.ListeValeurs=[]
 +            for l in DonneesAUtiliser:
 +                self.ListeDates.append(l[0])
 +                self.ListeValeurs.append(l[1])
 +            self.ValeurMax = self.arrondi(max(self.ListeValeurs))
 +            self.ValeurEchelle = self.ValeurMax/500
 +        else:
 +            self.ListeValeurs=[]
 +            self.ListeDates=[]
 +            for l in DonneesAUtiliser:
 +                self.ListeValeurs.append(l)
 +            self.ValeurMax = self.arrondi(max(self.ListeValeurs))
 +            self.ValeurEchelle = self.ValeurMax/500
 +
 +====== page 19 bas ======
 +
 +modifier juste la 1ère ligne :
 +    def DessineValeurs(self,dc):
 +
 +et la dernière :
 +            c2 = c2 + (50 * self.ValeurEchelle)
 +
 +====== page 20 haut ======
 +
 +modifier juste la 1ère ligne :
 +    def DessineBarres(self,dc):
 +
 +====== page 20 milieu ======
 +
 +    #==================================
 +    #  Convertit dd/mm/yy en timestamp unix
 +    #==================================
 +    def DateToStamp(self,x):
 +        x = x+" 00:00:00"
 +        return(time.mktime(time.strptime(x, "%d/%m/%Y %H:%M:%S")))
 +    #==================================
 +    #  Convertit un horodatage unix en dd/mm/yy
 +    #==================================
 +    def Timestamp2Date(self,tstmp):
 +        return datetime.fromtimestamp(int(tstmp)).strftime('%d/%m/%Y')
 +
 +====== page 20 bas ======
 +
 +    #==================================
 +    #  Dessine les dates en biais
 +    #==================================
 +    def DessineDates(self,dc,startdate,enddate):
 +        sd = int(self.DateToStamp(startdate))
 +        ed = int(self.DateToStamp(enddate))
 +        ed = ed + 86400
 +        stp = 1
 +        for cntr in range(sd,ed,86400):
 +            dt = self.Timestamp2Date(cntr)
 +            self.DessineTexteRot(dc,dt,65+(stp*20),600)
 +            stp = stp + 1
 +
 +====== page 21 milieu ======
 +
 +    #==================================
 +    #  Routine principale
 +    #==================================
 +    def OnPaint(self,event):
 +        dc = wx.PaintDC(self)
 +        self.DessineBoite(dc)
 +        self.DessineAxe(dc)
 +        self.DessineTitre(dc,self.TitreGraphe)
 +        # Barres de dates et dates
 +        self.DessineBarresDates(dc,31)
 +        leng = len(self.ListeDates)
 +        if leng > 0:
 +            sd = self.ListeDates[0]
 +            ed = self.ListeDates[4]
 +            self.DessineDates(dc,sd,ed)
 +        else:
 +            self.DessineDates(dc,"02/01/2015","03/01/2015")
 +        # Barres de valeurs - Dessine 10 barres 
 +        self.DessineValeurs(dc)
 +        # Enfin on dessine les barres de donnees
 +        self.DessineBarres(dc)
 +
 +====== page 21 bas ======
 +
 +modifier « data » en « donnees » sur les 2 premières lignes, et remplacer la ligne :
 +
 +    Ligne(None, -1, 'Bar Chart',donnees,"Ventes mensuelles - Colorado Springs")
  
issue96/python.1432459498.txt.gz · Dernière modification : 2015/05/24 11:24 de fredphil91