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() |
Partager