issue96:python
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
issue96:python [2015/05/24 11:24] – fredphil91 | issue96:python [2015/05/24 11:39] (Version actuelle) – fredphil91 | ||
---|---|---|---|
Ligne 163: | Ligne 163: | ||
Jusqu' | Jusqu' | ||
+ | |||
+ | ====== code encadré orangé page 17 haut ====== | ||
+ | |||
+ | class Ligne(wx.Frame): | ||
+ | def __init__(self, | ||
+ | wx.Frame.__init__(self, | ||
+ | self.Bind(wx.EVT_PAINT, | ||
+ | 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, | ||
+ | |||
+ | 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, | ||
+ | # Horizontal | ||
+ | dc.DrawLine(60, | ||
+ | # Vertical | ||
+ | dc.DrawLine(60, | ||
+ | |||
+ | ====== page 18 haut ====== | ||
+ | |||
+ | def DessineTitre(self, | ||
+ | dc.SetFont(wx.Font(20, | ||
+ | dc.SetPen(wx.Pen(wx.NamedColour(' | ||
+ | # Recupere la longueur du texte a dessiner | ||
+ | vals = dc.GetFullTextExtent(txt) | ||
+ | # Retourne (Largeur, | ||
+ | # Recupere la position gauche (x) pour centrer le texte | ||
+ | txtleft = (self.LargeurBoite-vals[0])/ | ||
+ | dc.DrawText(txt, | ||
+ | # Raz taille et couleur du stylo | ||
+ | dc.SetPen(wx.Pen(wx.NamedColour(' | ||
+ | |||
+ | ====== page 18 milieu ====== | ||
+ | |||
+ | modifier juste la 1ère ligne : | ||
+ | def DessineBarresDates(self, | ||
+ | |||
+ | ====== page 18 bas ====== | ||
+ | |||
+ | modifier juste la 1ère ligne : | ||
+ | def DessineTexteRot(self, | ||
+ | |||
+ | ====== page 19 haut ====== | ||
+ | |||
+ | # | ||
+ | # Arrondi au 500 le plus proche | ||
+ | # | ||
+ | def arrondi(self, | ||
+ | return int(math.ceil(x/ | ||
+ | |||
+ | ====== page 19 milieu ====== | ||
+ | |||
+ | def ReglerDonnees(self, | ||
+ | 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/ | ||
+ | else: | ||
+ | self.ListeValeurs=[] | ||
+ | self.ListeDates=[] | ||
+ | for l in DonneesAUtiliser: | ||
+ | self.ListeValeurs.append(l) | ||
+ | self.ValeurMax = self.arrondi(max(self.ListeValeurs)) | ||
+ | self.ValeurEchelle = self.ValeurMax/ | ||
+ | |||
+ | ====== page 19 bas ====== | ||
+ | |||
+ | modifier juste la 1ère ligne : | ||
+ | def DessineValeurs(self, | ||
+ | |||
+ | et la dernière : | ||
+ | c2 = c2 + (50 * self.ValeurEchelle) | ||
+ | |||
+ | ====== page 20 haut ====== | ||
+ | |||
+ | modifier juste la 1ère ligne : | ||
+ | def DessineBarres(self, | ||
+ | |||
+ | ====== page 20 milieu ====== | ||
+ | |||
+ | # | ||
+ | # Convertit dd/mm/yy en timestamp unix | ||
+ | # | ||
+ | def DateToStamp(self, | ||
+ | x = x+" 00: | ||
+ | return(time.mktime(time.strptime(x, | ||
+ | # | ||
+ | # Convertit un horodatage unix en dd/mm/yy | ||
+ | # | ||
+ | def Timestamp2Date(self, | ||
+ | return datetime.fromtimestamp(int(tstmp)).strftime(' | ||
+ | |||
+ | ====== page 20 bas ====== | ||
+ | |||
+ | # | ||
+ | # Dessine les dates en biais | ||
+ | # | ||
+ | def DessineDates(self, | ||
+ | sd = int(self.DateToStamp(startdate)) | ||
+ | ed = int(self.DateToStamp(enddate)) | ||
+ | ed = ed + 86400 | ||
+ | stp = 1 | ||
+ | for cntr in range(sd, | ||
+ | dt = self.Timestamp2Date(cntr) | ||
+ | self.DessineTexteRot(dc, | ||
+ | stp = stp + 1 | ||
+ | |||
+ | ====== page 21 milieu ====== | ||
+ | |||
+ | # | ||
+ | # Routine principale | ||
+ | # | ||
+ | def OnPaint(self, | ||
+ | dc = wx.PaintDC(self) | ||
+ | self.DessineBoite(dc) | ||
+ | self.DessineAxe(dc) | ||
+ | self.DessineTitre(dc, | ||
+ | # Barres de dates et dates | ||
+ | self.DessineBarresDates(dc, | ||
+ | leng = len(self.ListeDates) | ||
+ | if leng > 0: | ||
+ | sd = self.ListeDates[0] | ||
+ | ed = self.ListeDates[4] | ||
+ | self.DessineDates(dc, | ||
+ | else: | ||
+ | self.DessineDates(dc," | ||
+ | # 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', | ||
issue96/python.1432459498.txt.gz · Dernière modification : 2015/05/24 11:24 de fredphil91