Bonjour,

Je "n'arrive pas a recuperer" les donnees de mon formulaire

J'ai une sous classe wx.Frame avec un menu qui appelle
une sous classe de wx.Dialog avec une sous classe de wx.Validator.

Cette derniere recupere les donnes de wx.Dialog mais je ne suis pas capable
de les recuprer pour les afficher ailleurs. Ca doit etre du python de base
mais bon pas taper

Voici le code

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
 
# -*- coding: latin-1 -*- 
 
### Mini projet wxpython
### juste un formulaire avec Nom/prenom
### dbname=ldbbase
## dbuser=user
## dbtable=repert avec id|nom|prenom
 
import wx
import psycopg2
 
##--Realisation de la connection a la 
##--base donne : dbbase
 
## try:
##     dbconn=psycopg2.connect("dbname='dbbase' user='user'   host='localhost'")
##     print "A priori la connection est un succs"
 
## except:
##     print "La connection a chou"
## ##--Cration d'un cursor
## cur=dbconn.cursor()
 
##--Creation du formulaire de saisi du nom|prenom    
class SaisiPatient(wx.Dialog):
    def __init__(self,parent,data):
        wx.Dialog.__init__(self,parent,-1)
        data={"nom":"","prenom":""}
        ##--Creation des tiquettes
        about       = wx.StaticText(self, -1, "Saisi patient")
        nomlbl      = wx.StaticText(self, -1, "Nom")
        prenomlbl   = wx.StaticText(self,-1, "prenom")
        ##--Creation des controles
        nom         = wx.TextCtrl(self,-1,"",validator=ValSaisiPatient(data,"nom"))
        prenom      = wx.TextCtrl(self,-1,"",validator=ValSaisiPatient(data,"prenom"))
 
        ##--Creation des boutons Valider|Annuler
        validbtn=wx.Button(self,wx.ID_OK)
        annulbtn=wx.Button(self,wx.ID_CANCEL)
        validbtn.SetDefault()
        ###Creation du sizer
        mainsizer=wx.BoxSizer(wx.VERTICAL)
 
        ##--Creation d'un flexigrid 2 lignes 2 colonnes
        namesizer=wx.FlexGridSizer(2,2,5,5)
        namesizer.AddGrowableCol(1)
        namesizer.Add(nomlbl)
        namesizer.Add(nom,1,wx.EXPAND)
        namesizer.Add(prenomlbl)
        namesizer.Add(prenom,1,wx.EXPAND)    
 
 
        ##--Creation du sizer des boutons
        btnsizer=wx.StdDialogButtonSizer()
        btnsizer.AddButton(validbtn)
        btnsizer.AddButton(annulbtn)
        btnsizer.Realize()    
        ##--Peuplement du sizer vertical
        mainsizer.Add(about,0,wx.EXPAND)
        mainsizer.Add(namesizer,0,wx.EXPAND)
        mainsizer.Add(btnsizer,0,wx.EXPAND)
 
        self.SetSizer(mainsizer)
        mainsizer.Fit(self)
 
 
##--Definition des validateurs
##dans un premier temps pour uniquement recuperer les donnees
 
class ValSaisiPatient(wx.PyValidator):
    def __init__(self,data,key):
        wx.PyValidator.__init__(self)
        self.data=data
        self.key=key
        print "les données du formulaire sont"
 
    def Clone(self):
        return ValSaisiPatient(self.data,self.key)
 
    def Validate(self,win):
        return True
 
    def TransferToWindow(self):
        return True
 
    def TransferFromWindow(self):
        txtctl=self.GetWindow()
        self.data[self.key]=txtctl.GetValue()
        print self.data
        return True
 
##--Cration de la fentre pincipale
##--avec menu: patient/nouveau
class MainFrame(wx.Frame):
    def __init__(self,parent):
        wx.Frame.__init__(self,None,-1,"Repertoire")
 
        ##--Creation d'un panel pour contenir les menus
        self.panel=wx.Panel(self)
        ##--Creation de la barre de status
        statusbar=self.CreateStatusBar()
        ##--Creation de la barre de menu
        menubar=wx.MenuBar()
        ##--Creation du menu "patient"
        patient=wx.Menu()
        ##--Peuplement de la barre de menu
        menubar.Append(patient,"Patient")
        ##--Creation de l'item de menu "nouveau"
        nouveau=patient.Append(wx.NewId(),"Nouveau","Saisir un nouveau patient")
        #--Poursuite peuplement du menu:  Patient
        patient.AppendSeparator()
        quitte=patient.Append(wx.NewId(),"Quitter","Quitte l'application")
 
        ##--Mise en place de la barre de menu
        self.SetMenuBar(menubar)
 
##--A ce stade le programme la connection s'effectue
## il affiche la frame
        ##--Liaison des menus aux events
        self.Bind(wx.EVT_MENU, self.OnNouveauPatient,nouveau)
        self.Bind(wx.EVT_MENU, self.OnQuitte, quitte)
 
        ##--Creation  des rponse au choix de l'utilsateur
        ##--fait sur les menus
 
    def OnNouveauPatient(self,evt):
        print """Vous avez choisi d'enregistrer un nouveau patient\n
        j'affiche le formulaire de saisie"""
 
        dlg=SaisiPatient(self,data={"nom":"","prenom":""})
        dlg.ShowModal()
        dlg.Destroy()
 
        #wx.MessageBox("Vous voulez enregistrer %(nom)s %(prenom)s" % data)
        print ValSaisiPatient.data
 
    def OnQuitte(self,evt):
        self.Destroy()
 
##--Le main Loop
if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=MainFrame(None)
    frame.Show(True)	
    app.MainLoop()
Je vois que mon dictionnaire que je cherche c'est self.data. Mais je n'arrive pas
a l'utiliser.

Merci