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
   |  
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-    
 
# formulaire de saisie et boite de controle dialogue 
# niveau DEBUTANT, langages et versions :  
# WINDOWS PYTHON2.7 module WX (widget compatible revue ecran non-voyants  
# je ne trouve pas les commandes pour modifier un item de la boite de controle 
# et de placer les elements item dans les champs de saisie  
import wx
from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin
 
 
 
class DialogControle(wx.Dialog):
    """Creation formulaire avec report dans boite controle passage listre titre de champs"""
 
    def __init__(self, parent, id, title,ListeCh):
        """Constructeur du formulaire"""
        wx.Dialog.__init__(self, parent, id, title, size=(1200,800),         style=wx.DEFAULT_DIALOG_STYLE)
        # initialisation liste des champs du formulaire
        self.LiCh = ListeCh
 
        NbrL = len(self.LiCh)
        hbox  = wx.BoxSizer(wx.HORIZONTAL)
        vbox1 = wx.BoxSizer(wx.VERTICAL)
        vbox2 = wx.BoxSizer(wx.VERTICAL) # liste de champs de controle
        vbox3 = wx.GridSizer(NbrL,2,0,0) # tableau 2 colonnes  champs avec demande saisie
        vbox4 = wx.BoxSizer(wx.VERTICAL) 
        # box4 boutons ajouter supprimer effacer tout, modifier
        # valider  les enregistrements de la boite de controle   
 
        # deux objet de panneau
        pnl1 = wx.Panel(self, -1, style=wx.SIMPLE_BORDER)
        pnl2 = wx.Panel(self, -1, style=wx.SIMPLE_BORDER)
 
        # instance pour liste de controle avec insertion colonne de champs
        self.lc = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
        for c in range(NbrL): 
            self.lc.InsertColumn(c, self.LiCh[c])
            self.lc.SetColumnWidth(c, 140)
            #self.lc.SetColumnWidth(1, 250)
 
      	# ajout dans les panneaux pnl dans boite de dialogue box1  
        vbox1.Add(pnl1, 1, wx.EXPAND | wx.ALL, 3)
        vbox1.Add(pnl2, 1, wx.EXPAND | wx.ALL, 3)
        # ajout lc dans boite de controle dans box2 
        vbox2.Add(self.lc, 1, wx.EXPAND | wx.ALL, 3)
 
        self.tc = {} # dictionnaire de champs de formulaire 
        # construction ligne de label du dictionnaire champs pour formulaire 
        c = 0
        for c in range(NbrL):
            self.tc[self.LiCh[c]] = wx.TextCtrl(pnl1, -1)
 
        # creation liste pour placer les elements de formulaire  
        # ajout des elements dans tableau de 2 colonnes formulaire (titre champs plus enregistrement a saisir) 
        c = 0
        self.formu = []
        for c in range(NbrL):
            self.formu.append((wx.StaticText(pnl1, -1, self.LiCh[c]),0, wx.ALIGN_CENTER,))
            self.formu.append((self.tc[self.LiCh[c]], 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL,))
 
        # modification de box3 saisie 
        vbox3.AddMany(self.formu)
        pnl1.SetSizer(vbox3)
 
        # ajout des  bouton et modification de pnl2
        vbox4.Add(wx.Button(pnl2, 10, '&Ajouter'),   0, wx.ALIGN_CENTER| wx.TOP, 45)
        vbox4.Add(wx.Button(pnl2, 11, '&Supprimer'), 0, wx.ALIGN_CENTER|wx.TOP, 15)
        vbox4.Add(wx.Button(pnl2, 12, 'Effacer tout'), 0, wx.ALIGN_CENTER| wx.TOP, 15)
        vbox4.Add(wx.Button(pnl2, 15, '&Modifier'), 0, wx.ALIGN_CENTER| wx.TOP, 15)
        vbox4.Add(wx.Button(pnl2, 20, '&Valider'), 0, wx.ALIGN_CENTER| wx.TOP, 15)
        pnl2.SetSizer(vbox4)
 
        # evenement envois des evements des boutons vers fonctions   methode
        self.Bind (wx.EVT_BUTTON, self.AjouterF, id=10)
        self.Bind (wx.EVT_BUTTON, self.SupprimerF, id=11)
        self.Bind (wx.EVT_BUTTON, self.ToutEffacerF, id=12)
        self.Bind (wx.EVT_BUTTON, self.ModifierF, id=15)
        self.Bind (wx.EVT_BUTTON, self.ValiderF, id=20)
        hbox.Add(vbox1, 1, wx.EXPAND)
        hbox.Add(vbox2, 1, wx.EXPAND)
        self.SetSizer(hbox)
 
    def MInfo(self, MessageB,TitreB):
        dlg = wx.MessageDialog(self,TitreB,MessageB, wx.OK|wx.ICON_INFORMATION)
        dlg.ShowModal()
        dlg.Destroy()
 
    def AjouterF(self, event):
        """ajout dans la liste controle des valeurs du formulaire saisies"""
        if not self.tc['Nom'].GetValue() or not self.tc[self.LiCh[1]].GetValue():
            self.MInfo("Attention", "Saisie nom et prenom obligatoire")
            return
 
        num_items = self.lc.GetItemCount()
        #self.MInfo("Attention", str(num_items))
        self.lc.InsertStringItem(num_items, self.tc[self.LiCh[0]].GetValue())
        i = 0
        for i in range(len(self.LiCh)): 
            if i > 0:
                self.lc.SetStringItem(num_items, i, self.tc[self.LiCh[i]].GetValue())
        # effacement des valeurs du formulaire
        i = 0
        for i in range(len(self.LiCh)): 
            self.tc[self.LiCh[i]].Clear()
 
    def SupprimerF(self, event):
        """supprimer un enregistrement de liste de controle""" 
        index = self.lc.GetFocusedItem()
        self.MInfo("Attention", str(index))
        self.lc.DeleteItem(index)
 
    def ModifierF(self, event):
        index = self.lc.GetFocusedItem()
        #sel = self.lc.GetSelection()
        #text = self.lc.GetString(index)
        #self.MInfo("Attention", text)
        #Wx.TextEditMixin
        #self.essai =   self.lc.GetStringItem(index)
        #self.aa =   self.lc.GetItemText(index)
        self.essai =   self.lc.GetItemText(index)
        #self.aa =   self.lc.GetStringItem(index)
        self.MInfo("Attention", self.essai+ "Erreur manque prenom et adresse, votre aide merci")
 
    def ValiderF(self, event):
        """valider le formulaire"""
        frame = MInfo(None, -1, 'aqestion')
        frame.ShowModal()
        #frame.Destroy()
        #frame = MessageInfo(None, -1, 'bqestion')
        #frame.Show(True)
        #fr = frame.GetValue()
        #frame = MessageInfo(None, -1, 'arecupera')
        #frame.Show(True)
        #frame.Destroy()
        self.Close()
 
    def ToutEffacerF(self, event):
        """Effacer toute les enregistrements de la liste de controle"""
        self.lc.DeleteAllItems()
 
    def setListeCh(self, LiCh):
        self.LiChamps = LiCh
 
 
class MyApp(wx.App):
 
    def OnInit(self):
 
        # passage de liste de label de champs pour contruire fiche formulaire de saisie 
        LiCh = ['Nom', 'Prenom', 'adresse']
        dia = DialogControle(None, -1, 'Formulaire saisie',LiCh)
        dia.ShowModal()
        dia.Destroy()
        return True
 
 
app = MyApp(0)
app.MainLoop() | 
Partager