allo, à l'huile

allo, à l'huile - Python - Programmation

Marsh Posté le 24-12-2011 à 19:56:25    

Bon en gros j'ai un partiel de progra qui m'attends et pour m'entraîner je fais d'anciens anal  [:cerveau goatse]  
Il y a un exo ou je suis bloqué sur un détail:
 
Ecrire un programme qui permet dans une fenêtre de simuler le fonctionnement d'un
téléphone mobile. La fenêtre contiendra une zone de texte qui affichera le numéro composé,
des boutons pour les touches 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, une touche "Corriger" et une touche
"Appeler". L’utilisateur emploiera les touches pour saisir le numéro. Celui-ci s’affichera au
fur et à mesure de la saisie avec un espace après chaque groupe de 2 chiffres, par exemple : 01
23 45 67 89.
La touche "Corriger" permettra de supprimer le dernier chiffre correspondant à
la dernière touche qui avait été appuyée. L'utilisateur appuiera sur la touche "Appeler "
lorsqu'il aura rentré son numéro. Si le numéro contient 10 chiffres, on affichera dans la zone
de texte "Appel". Si le numéro ne contient pas 10 chiffres, on affichera dans la zone de texte
"numéro incorrect". Le fait d’appuyer sur la touche "Corriger" permettra alors de faire
réapparaître le numéro pour modifier la saisie.
 
Dois je créer une fonction texte ou bien je dois créer des boucles à chaque bouton ?
bref je suis completement perdu  
 
Joyeux noel à tous  [:radezleb]  

Code :
  1. from pylab import *
  2. import wx
  3. class MaFenetre(wx.Frame):
  4.     def __init__(self):
  5.         wx.Frame.__init__(self, parent=None, title="Ma Fenetre" )
  6.         self.sizer = wx.BoxSizer(wx.HORIZONTAL)
  7.        
  8.         self.n=[]
  9.        
  10.         self.bouton0 = wx.Button(parent=self, label="0" )
  11.         self.bouton0.Bind(wx.EVT_BUTTON, self.OnButtonPush0)
  12.         self.sizer.Add(self.bouton0, proportion=1, flag=wx.EXPAND)
  13.        
  14.         self.bouton1 = wx.Button(parent=self, label="1" )
  15.         self.bouton1.Bind(wx.EVT_BUTTON, self.OnButtonPush1)
  16.         self.sizer.Add(self.bouton1, proportion=1, flag=wx.EXPAND)
  17.         self.bouton2 = wx.Button(parent=self, label="2" )
  18.         self.bouton2.Bind(wx.EVT_BUTTON, self.OnButtonPush2)
  19.         self.sizer.Add(self.bouton2, proportion=1, flag=wx.EXPAND)
  20.         self.bouton3 = wx.Button(parent=self, label="3" )
  21.         self.bouton3.Bind(wx.EVT_BUTTON, self.OnButtonPush3)
  22.         self.sizer.Add(self.bouton3, proportion=1, flag=wx.EXPAND)
  23.         self.bouton4 = wx.Button(parent=self, label="4" )
  24.         self.bouton4.Bind(wx.EVT_BUTTON, self.OnButtonPush4)
  25.         self.sizer.Add(self.bouton4, proportion=1, flag=wx.EXPAND)
  26.        
  27.         self.bouton5 = wx.Button(parent=self, label="5" )
  28.         self.bouton5.Bind(wx.EVT_BUTTON, self.OnButtonPush5)
  29.         self.sizer.Add(self.bouton5, proportion=1, flag=wx.EXPAND)
  30.         self.bouton6 = wx.Button(parent=self, label="6" )
  31.         self.bouton6.Bind(wx.EVT_BUTTON, self.OnButtonPush6)
  32.         self.sizer.Add(self.bouton6, proportion=1, flag=wx.EXPAND)
  33.         self.bouton7 = wx.Button(parent=self, label="7" )
  34.         self.bouton7.Bind(wx.EVT_BUTTON, self.OnButtonPush7)
  35.         self.sizer.Add(self.bouton7, proportion=1, flag=wx.EXPAND)
  36.         self.bouton8 = wx.Button(parent=self, label="8" )
  37.         self.bouton8.Bind(wx.EVT_BUTTON, self.OnButtonPush8)
  38.         self.sizer.Add(self.bouton8, proportion=1, flag=wx.EXPAND)
  39.         self.bouton9 = wx.Button(parent=self, label="9" )
  40.         self.bouton9.Bind(wx.EVT_BUTTON, self.OnButtonPush9)
  41.         self.sizer.Add(self.bouton9, proportion=1, flag=wx.EXPAND)
  42.         self.bouton10 = wx.Button(parent=self, label="corriger" )
  43.         self.bouton10.Bind(wx.EVT_BUTTON, self.OnButtonPush10)
  44.         self.sizer.Add(self.bouton10, proportion=1, flag=wx.EXPAND)       
  45.        
  46.         self.bouton11 = wx.Button(parent=self, label="appeler" )
  47.         self.bouton11.Bind(wx.EVT_BUTTON, self.OnButtonPush11)
  48.         self.sizer.Add(self.bouton11, proportion=1, flag=wx.EXPAND)
  49.         self.texte = wx.StaticText(parent=self, label="numero:"+str(self.n))
  50.         self.sizer.Add(self.texte, proportion=5, flag=wx.EXPAND)
  51.        
  52.         self.SetSizer(self.sizer)
  53.         self.Show()
  54.                                
  55.     def OnButtonPush0(self, event):
  56.         self.n.append(0)
  57.         self.texte.SetLabel(str(self.n))
  58.                                
  59.     def OnButtonPush1(self, event):
  60.         self.n.append(1)
  61.         self.texte.SetLabel(str(self.n))
  62.     def OnButtonPush2(self, event):
  63.         self.n.append(2)
  64.         self.texte.SetLabel(str(self.n))
  65.            
  66.     def OnButtonPush3(self, event):
  67.         self.n.append(3)
  68.         self.texte.SetLabel(str(self.n))
  69.     def OnButtonPush4(self, event):
  70.         self.n.append(4)
  71.         self.texte.SetLabel(str(self.n))
  72.     def OnButtonPush5(self, event):
  73.         self.n.append(5)
  74.         self.texte.SetLabel(str(self.n))
  75.                                
  76.     def OnButtonPush6(self, event):
  77.         self.n.append(6)
  78.         self.texte.SetLabel(str(self.n))
  79.     def OnButtonPush7(self, event):
  80.         self.n.append(7)
  81.         self.texte.SetLabel(str(self.n))
  82.     def OnButtonPush8(self, event):
  83.         self.n.append(8)
  84.         self.texte.SetLabel(str(self.n))
  85.                                
  86.     def OnButtonPush9(self, event):
  87.         self.n.append(9)
  88.         self.texte.SetLabel(str(self.n))
  89.     def OnButtonPush10(self, event):
  90.         del self.n[-1]
  91.         self.texte.SetLabel(str(self.n))
  92.     def OnButtonPush11(self, event):
  93.         for i in range (len(self.n)):
  94.             if i==9:
  95.                 self.texte.SetLabel("appeler" )
  96.             else:
  97.                 self.texte.SetLabel("numéro incorrect" )
  98.    
  99.                                
  100. app = wx.App()
  101. fen = MaFenetre()
  102. app.MainLoop()

Reply

Marsh Posté le 24-12-2011 à 19:56:25   

Reply

Marsh Posté le 27-12-2011 à 12:22:43    

La solution d'un ami  
Plus propre, plus fonctionnel
Met un poil trop compliqué pour moi  :o  
 

Code :
  1. # -*- coding: cp1252 -*-
  2. import wx
  3. class MaFenetre(wx.Frame):
  4.     def __init__(self):
  5.         wx.Frame.__init__(self, parent=None, title="Ma Fenetre" )
  6.         self.numero = ''
  7.         self.appel_pushed = False
  8.         self.n = 0
  9.         self.texte_ecran = wx.StaticText(parent=self, label=self.numero)
  10.         self.telephone = wx.BoxSizer(wx.VERTICAL)
  11.         self.clavier = wx.BoxSizer(wx.VERTICAL)
  12.         self.ligne=[]
  13.         for i in range(4):
  14.             self.ligne.append(wx.BoxSizer(wx.HORIZONTAL))
  15.     #Clavier-----------------------------------------------------------------------
  16.            
  17.         self.bouton=[]
  18.         for i in range(9):
  19.             self.bouton.append(wx.Button(parent=self, label=str(i+1)))
  20.        
  21.         self.bouton.append(wx.Button(parent=self, label="Corriger" ))
  22.         self.bouton.append(wx.Button(parent=self, label="0" ))
  23.         self.bouton.append(wx.Button(parent=self, label="Appeller" ))
  24.     #Binding-----------------------------------------------------------------------
  25.        
  26.         self.bouton[0].Bind(wx.EVT_BUTTON, self.OnButton1Push)
  27.         self.bouton[1].Bind(wx.EVT_BUTTON, self.OnButton2Push)
  28.         self.bouton[2].Bind(wx.EVT_BUTTON, self.OnButton3Push)
  29.         self.bouton[3].Bind(wx.EVT_BUTTON, self.OnButton4Push)
  30.         self.bouton[4].Bind(wx.EVT_BUTTON, self.OnButton5Push)
  31.         self.bouton[5].Bind(wx.EVT_BUTTON, self.OnButton6Push)
  32.         self.bouton[6].Bind(wx.EVT_BUTTON, self.OnButton7Push)
  33.         self.bouton[7].Bind(wx.EVT_BUTTON, self.OnButton8Push)
  34.         self.bouton[8].Bind(wx.EVT_BUTTON, self.OnButton9Push)
  35.         self.bouton[9].Bind(wx.EVT_BUTTON, self.OnButtonCPush)
  36.         self.bouton[10].Bind(wx.EVT_BUTTON, self.OnButton0Push)
  37.         self.bouton[11].Bind(wx.EVT_BUTTON, self.OnButtonAPush)
  38.     #Sizers------------------------------------------------------------------------
  39.        
  40.         for i in range(4):
  41.             for j in range(3):
  42.                 self.ligne[i].Add(self.bouton[j+i*3], proportion=1, flag=wx.EXPAND)
  43.             self.clavier.Add(self.ligne[i], proportion=1, flag=wx.EXPAND)
  44.         self.telephone.Add(self.texte_ecran, proportion=1, flag=wx.EXPAND)
  45.         self.telephone.Add(self.clavier, proportion=4, flag=wx.EXPAND)
  46.         self.SetSizer(self.telephone)
  47.         self.Show()
  48.        
  49.     #Fonctions---------------------------------------------------------------------
  50.        
  51.     def PushButton(self, Ntouche):
  52.         if self.appel_pushed == False:
  53.             if self.n > 0 and self.n % 2 == 0:
  54.                 self.numero += (' '+str(Ntouche))
  55.             else:
  56.                 self.numero += str(Ntouche)
  57.             self.n += 1
  58.             self.texte_ecran.SetLabel(self.numero)
  59.    
  60.     def OnButton1Push(self, event):
  61.         self.PushButton(1)
  62.     def OnButton2Push(self, event):
  63.         self.PushButton(2)
  64.     def OnButton3Push(self, event):
  65.         self.PushButton(3)
  66.        
  67.     def OnButton4Push(self, event):
  68.         self.PushButton(4)
  69.        
  70.     def OnButton5Push(self, event):
  71.         self.PushButton(5)
  72.        
  73.     def OnButton6Push(self, event):
  74.         self.PushButton(6)
  75.        
  76.     def OnButton7Push(self, event):
  77.         self.PushButton(7)
  78.        
  79.     def OnButton8Push(self, event):
  80.         self.PushButton(8)
  81.        
  82.     def OnButton9Push(self, event):
  83.         self.PushButton(9)
  84.     def OnButton0Push(self, event):
  85.         self.PushButton(0)
  86.        
  87.     def OnButtonCPush(self, event):
  88.         if self.appel_pushed:
  89.             self.texte_ecran.SetLabel(self.numero)
  90.             self.appel_pushed = False
  91.         else:
  92.             tmp = self.numero
  93.             self.numero = ''
  94.             if self.n%2 == 0:
  95.                 for i in range(len(tmp)-1):
  96.                     self.numero += tmp[i]
  97.             else:
  98.                 for i in range(len(tmp)-2):
  99.                     self.numero += tmp[i]
  100.             self.texte_ecran.SetLabel(str(self.numero))
  101.             self.n -= 1
  102.             if self.n < 0:
  103.                 self.n = 0
  104.        
  105.     def OnButtonAPush(self, event):
  106.         if self.n == 10:
  107.             self.texte_ecran.SetLabel('Appel')
  108.             self.appel_pushed = True
  109.         else:
  110.             self.texte_ecran.SetLabel('Numéro incorrect')
  111.             self.appel_pushed = True
  112.            
  113. app = wx.App()
  114. fen = MaFenetre()
  115. app.MainLoop()


 
 [:radezleb]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed