Bonjour,
Débutant je cherche a modifier une zone de liste contrôle de box WX
je ne trouve pas les commandes necessaiers.
voir code. merci.
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
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()