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
   | import wx
# -*- coding: latin-1 -*- 
 
#-- Creation des classes.
 
class MainFrame(wx.Frame):
	def __init__(self,parent,id):
		wx.Frame.__init__(self, parent,id,'PyOphta', size = (500,400))
		#--Creation  d'un conteneur
		#self.panel=wx.Panel(self)
		self.SetBackgroundColour('yellow')
		#--Creation de la barre de status
		self.CreateStatusBar()
		#--Creation de la barre de menu
		menubar=wx.MenuBar()	
 
		#--Création d'un premier menu "Patient"
		#--Création des autres menus
		patient=wx.Menu()
		agenda=wx.Menu()
		consult=wx.Menu()
		compta=wx.Menu()
		#--Peuplement de la barre de menu
		menubar.Append(patient,"Patient")
		menubar.Append(agenda,"Agenda")
		menubar.Append(consult,"Consultation")
		menubar.Append(compta,"Comptabilité")
		#--Peuplement du menu: Patient
		nouveau=patient.Append(wx.NewId(),"Nouveau","Saisir un nouveau patient")
		patient.Append(wx.NewId(),"Rechercher","Rechercher un patient")
		#--Mise en place  d'un séparateur
		patient.AppendSeparator()
		#--Poursuite peuplement du menu:  Patient
		patient.Append(wx.NewId(),"Quitter","Quitte l'application")
		#--Peuplement de agenda
		agenda.Append(wx.NewId(),"Nouveau","Prendre un rendez-vous")
		agenda.Append(wx.NewId(),"Rechercher","Rechercher le premier rendez-vous disponible")
		agenda.Append(wx.NewId(),"Consulter","Consulter l'agenda")
		#--Peuplement de "consultation"
		consult.Append(wx.NewId(),"Saisir","Saisir une nouvelle consultation")
		consult.Append(wx.NewId(),"Rechercher","Recherche multicritère d'une consultation")
		#--Peuplement du Menu Comptabilté
		#--TODO
		#--le panel est pas jaune !!!!colour et pas color
		#--Affichage de la barre de menu
		#--Cette méthode doit venir à la fin du
		#--remplissage de menubar.
		self.SetMenuBar(menubar)
		#--Accrochage de l'event wx.Menu
		self.Bind(wx.EVT_MENU, self.OnNewPatient, nouveau)
		self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
		#--Défnition de la fonction OnNewPatient
		#--Ouvre un formulaire pour la saisie
		#--des donnees patient
	def OnNewPatient(self,evt):
		form=SaisiePatient(self)
		#form.Show()
 
	def OnCloseWindow(self,evt):
		self.Destroy()
 
 
 
#--Création de la classe saisie patient
class SaisiePatient(wx.Panel):
	def __init__(self, parent):
		wx.Panel.__init__(self, parent, -1)
		#panel = wx.Panel(self)
 
		# First create the controls
		topLbl = wx.StaticText(self, -1, "État civil")
		topLbl.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD))
 
		nameLbl = wx.StaticText(self, -1, "Name:")
		name = wx.TextCtrl(self, -1, "");
 
		addrLbl = wx.StaticText(self, -1, "Address:")
		addr1 = wx.TextCtrl(self, -1, "");
		addr2 = wx.TextCtrl(self, -1, "");
 
		cstLbl = wx.StaticText(self, -1, "City, State, Zip:")
		city  = wx.TextCtrl(self, -1, "", size=(150,-1));
		state = wx.TextCtrl(self, -1, "", size=(50,-1));
		zip   = wx.TextCtrl(self, -1, "", size=(70,-1));
 
		phoneLbl = wx.StaticText(self, -1, "Phone:")
		phone = wx.TextCtrl(self, -1, "");
 
		emailLbl = wx.StaticText(self, -1, "Email:")
		email = wx.TextCtrl(self, -1, "");
 
		saveBtn = wx.Button(self, -1, "Save")
		cancelBtn = wx.Button(self, -1, "Cancel")
 
		# Now do the layout.
 
		# mainSizer is the top-level one that manages everything
		mainSizer = wx.BoxSizer(wx.VERTICAL)
		mainSizer.Add(topLbl, 0, wx.ALL, 5)
		mainSizer.Add(wx.StaticLine(self), 0,
				wx.EXPAND|wx.TOP|wx.BOTTOM, 5)
 
		# addrSizer is a grid that holds all of the address info
		addrSizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
		addrSizer.AddGrowableCol(1)
		addrSizer.Add(nameLbl, 0,
				wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
		addrSizer.Add(name, 0, wx.EXPAND)
		addrSizer.Add(addrLbl, 0,
				wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
		addrSizer.Add(addr1, 0, wx.EXPAND)
		addrSizer.Add((10,10)) # some empty space
		addrSizer.Add(addr2, 0, wx.EXPAND)
 
		addrSizer.Add(cstLbl, 0,
				wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
 
		# the city, state, zip fields are in a sub-sizer
		cstSizer = wx.BoxSizer(wx.HORIZONTAL)
		cstSizer.Add(city, 1)
		cstSizer.Add(state, 0, wx.LEFT|wx.RIGHT, 5)
		cstSizer.Add(zip)
		addrSizer.Add(cstSizer, 0, wx.EXPAND)
 
		addrSizer.Add(phoneLbl, 0,
				wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
		addrSizer.Add(phone, 0, wx.EXPAND)
		addrSizer.Add(emailLbl, 0,
				wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
		addrSizer.Add(email, 0, wx.EXPAND)
 
		# now add the addrSizer to the mainSizer
		mainSizer.Add(addrSizer, 0, wx.EXPAND|wx.ALL, 10)
 
		# The buttons sizer will put them in a row with resizeable
		# gaps between and on either side of the buttons
		btnSizer = wx.BoxSizer(wx.HORIZONTAL)
		btnSizer.Add((20,20), 1)
		btnSizer.Add(saveBtn)
		btnSizer.Add((20,20), 1)
		btnSizer.Add(cancelBtn)
		btnSizer.Add((20,20), 1)
 
		mainSizer.Add(btnSizer, 0, wx.EXPAND|wx.BOTTOM, 10)
 
		#Lie le sizer a panel
		self.SetSizer(mainSizer)
 
		# Fit the frame to the needs of the sizer.  The frame will
		# automatically resize the panel as needed.  Also prevent the
		# frame from getting smaller than this size.
		mainSizer.Fit(self)
		mainSizer.SetSizeHints(self)
 
##--Le main Loop
if __name__=='__main__':
	app=wx.PySimpleApp()
	frame=MainFrame(None,-1)
	frame.Show(True)		       
	app.MainLoop() | 
Partager