[Olpc-uruguay] Actividad para llevar fichas personales de los alumnos
amviera en adinet.com.uy
amviera en adinet.com.uy
Vie Oct 8 10:57:47 EDT 2010
Les envío el código completo. Antes que lo lean les comento que estoy
estudiando GTK en estos días y esto es mi primera experiencia, por lo
que seguramente encontrarán que la manera de programar no es del todo
adecuada, y que seguramente se puede resumir. Eso es lo que estoy
estudiando actualmente.
Gracias.
#!/usr/bin/env python
import os
import pygtk
pygtk.require('2.0')
import gtk,sys
p=[" "," "," "," "," "," "," "," "," "," "," "," "," ","
"," "," "," "," "," "]
x=1
cargado="no"
class hc:
def __init__(self,p,x,cargado):
datos=["","","","","","","","","","","","","","","","","","",""]
abriendoagenda = open('agenda','r')
registros = abriendoagenda.readlines()
abriendoagenda.close()
archivo = str(registros[x][43:-1]) + '.psi'
datoagenda = registros[x]
cantidadregistros=len(registros)-1
# Se crea la ventana principal del programa
window=gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_border_width(10)
window.connect("delete_event",gtk.main_quit)
vbox=gtk.VBox()
window.add(vbox)
vbox.show()
# Se crean los botones de la ventana principal
cmdguardar=gtk.Button(label="Guardar")
cmdnuevo=gtk.Button(label="Nuevo")
cmdnuevo.connect("clicked",self.nuevo,p,x,cargado)
cmdeliminar=gtk.Button(label="Eliminar")
cmdeliminar.connect("clicked",self.eliminar,archivo,datoagenda,p,x,
cargado)
cmdsalir=gtk.Button(label="Salir")
cmdsalir.connect("clicked",gtk.main_quit)
cmdanterior=gtk.Button(label="Anterior")
cmdanterior.connect("clicked",self.anterior,p,x,cargado)
cmdsiguiente=gtk.Button(label="Siguiente")
cmdsiguiente.connect("clicked",self.siguiente,p,x,cargado,
cantidadregistros)
cmdmostrar=gtk.Button(label="Mostrar")
cmdmostrar.connect("clicked",self.mostrar,archivo,p,x,cargado)
cmdnuevo.show()
cmdsalir.show()
cmdeliminar.show()
cmdanterior.show()
cmdsiguiente.show()
cmdmostrar.show()
# Se crean las cajas de texto y los respectivos nombres
lblnom=gtk.Label("Nombre")
lblape=gtk.Label("Apellido")
lbldir=gtk.Label("Direccion")
lbltel=gtk.Label("Tel")
lblecu=gtk.Label("Escuela")
lbleco=gtk.Label("Escolaridad")
lblder=gtk.Label("Derivado por")
lblmot=gtk.Label("Mot. consulta")
lbltra=gtk.Label("Tratamientos")
lblmed=gtk.Label("Mediciacion")
lblcen=gtk.Label("Centro asis.")
lblfna=gtk.Label("F. nacim.")
lblfin=gtk.Label("F. ingreso")
lblpre=gtk.Label("Ant. prenatal")
lblper=gtk.Label("Ant. perinatal")
lblpos=gtk.Label("Ant. postnatal")
lblacu=gtk.Label("Acuerdos flia.")
lblotr=gtk.Label("Otros datos")
lblobs=gtk.Label("Observaciones")
lblabr=gtk.Label("Abrir registro de")
lblnom.show()
lblape.show()
lbldir.show()
lbltel.show()
lblecu.show()
lbleco.show()
lblder.show()
lblmot.show()
lbltra.show()
lblmed.show()
lblcen.show()
lblfna.show()
lblfin.show()
lblpre.show()
lblper.show()
lblpos.show()
lblacu.show()
lblotr.show()
lblobs.show()
lblabr.show()
txtnom=gtk.Entry(0)
txtape=gtk.Entry(0)
txtdir=gtk.Entry(0)
txttel=gtk.Entry(0)
txtecu=gtk.Entry(0)
txteco=gtk.Entry(0)
txtder=gtk.Entry(0)
txtmot=gtk.Entry(0)
txttra=gtk.Entry(0)
txtmed=gtk.Entry(0)
txtcen=gtk.Entry(0)
txtfna=gtk.Entry(0)
txtfin=gtk.Entry(0)
txtpre=gtk.Entry(0)
txtper=gtk.Entry(0)
txtpos=gtk.Entry(0)
txtacu=gtk.Entry(0)
txtotr=gtk.Entry(0)
txtobs=gtk.Entry(0)
txtabr=gtk.Entry(0)
txtnom.set_text(p[0][:-1])
txtape.set_text(p[1][:-1])
txtdir.set_text(p[2][:-1])
txttel.set_text(p[3][:-1])
txtecu.set_text(p[7][:-1])
txteco.set_text(p[6][:-1])
txtder.set_text(p[8][:-1])
txtmot.set_text(p[9][:-1])
txttra.set_text(p[11][:-1])
txtmed.set_text(p[12][:-1])
txtcen.set_text(p[10][:-1])
txtfna.set_text(p[5][:-1])
txtfin.set_text(p[4][:-1])
txtpre.set_text(p[13][:-1])
txtper.set_text(p[14][:-1])
txtpos.set_text(p[15][:-1])
txtacu.set_text(p[16][:-1])
txtotr.set_text(p[17][:-1])
txtobs.set_text(p[18][:-1])
txtabr.set_text("Seleccione registro con los botones")
txtnom.show()
txtape.show()
txtdir.show()
txttel.show()
txtecu.show()
txteco.show()
txtder.show()
txtmot.show()
txttra.show()
txtmed.show()
txtcen.show()
txtfna.show()
txtfin.show()
txtpre.show()
txtper.show()
txtpos.show()
txtacu.show()
txtotr.show()
txtobs.show()
txtabr.show()
hbox1=gtk.HBox()
hbox1.pack_start(lblnom)
hbox1.pack_start(txtnom)
hbox1.pack_start(lblape)
hbox1.pack_start(txtape)
hbox1.pack_start(lbldir)
hbox1.pack_start(txtdir)
hbox1.show()
hbox2=gtk.HBox()
hbox2.pack_start(lbltel)
hbox2.pack_start(txttel)
hbox2.pack_start(lblfna)
hbox2.pack_start(txtfna)
hbox2.pack_start(lblfin)
hbox2.pack_start(txtfin)
hbox2.pack_start(lblmot)
hbox2.pack_start(txtmot)
hbox2.show()
hbox3=gtk.HBox()
hbox3.pack_start(lblder)
hbox3.pack_start(txtder)
hbox3.pack_start(lblecu)
hbox3.pack_start(txtecu)
hbox3.pack_start(lbleco)
hbox3.pack_start(txteco)
hbox3.show()
hbox4=gtk.HBox()
hbox4.pack_start(lblcen)
hbox4.pack_start(txtcen)
hbox4.pack_start(lbltra)
hbox4.pack_start(txttra)
hbox4.pack_start(lblmed)
hbox4.pack_start(txtmed)
hbox4.show()
hbox5=gtk.HBox()
hbox5.pack_start(lblpre)
hbox5.pack_start(txtpre)
hbox5.show()
hbox6=gtk.HBox()
hbox6.pack_start(lblper)
hbox6.pack_start(txtper)
hbox6.show()
hbox7=gtk.HBox()
hbox7.pack_start(lblpos)
hbox7.pack_start(txtpos)
hbox7.show()
hbox8=gtk.HBox()
hbox8.pack_start(lblacu)
hbox8.pack_start(txtacu)
hbox8.show()
hbox9=gtk.HBox()
hbox9.pack_start(lblotr)
hbox9.pack_start(txtotr)
hbox9.show()
hbox10=gtk.HBox()
hbox10.pack_start(lblobs)
hbox10.pack_start(txtobs)
hbox10.show()
hbox11=gtk.HBox()
hbox11.pack_start(cmdnuevo)
hbox11.pack_start(cmdguardar)
hbox11.pack_start(cmdeliminar)
hbox11.pack_start(cmdsalir)
hbox11.show()
hbox12=gtk.HBox()
hbox12.pack_start(lblabr)
hbox12.pack_start(txtabr)
hbox12.pack_start(cmdanterior)
hbox12.pack_start(cmdsiguiente)
hbox12.pack_start(cmdmostrar)
hbox12.show()
vbox.pack_start(hbox1)
vbox.pack_start(hbox2)
vbox.pack_start(hbox3)
vbox.pack_start(hbox4)
vbox.pack_start(hbox5)
vbox.pack_start(hbox6)
vbox.pack_start(hbox7)
vbox.pack_start(hbox8)
vbox.pack_start(hbox9)
vbox.pack_start(hbox10)
vbox.pack_start(hbox11)
vbox.pack_start(hbox12)
txtabr.set_text(registros[x][:-1])
datos=[txtnom.get_text() ,txtape.get_text(),txtdir.get_text(),txttel.
get_text(),txtecu.get_text(),txteco.get_text(),txtder.get_text(),txttra.
get_text(),txtmed.get_text(),txtcen.get_text(),txtfna.get_text(),txtfin.
get_text(),txtpre.get_text(),txtper.get_text(),txtpos.get_text(),txtacu.
get_text(),txtobs.get_text()]
#LO QUE SIGUE COMENTARIADO FUNCIONA Y GUARDA LOS DATOS SIN DAR
#PROBLEMA, PERO AL PASARLO A GUARDAR DEJA DE FUNCIONAR.
# g=open("tt","w")
# for r in range (0,17):
# g.write(datos[r]+'\n')
# g.close()
cmdguardar.connect("clicked",self.guardar,datos,cargado,p,x,archivo)
cmdguardar.show()
vbox.show()
window.show()
def mostrar(self,cmdsiguiente,archivo,p,x,cargado):
abriendoregistro = open(archivo,'r')
p = abriendoregistro.readlines()
abriendoregistro.close()
cargado="si"
self. __init__(p,x,cargado)
def siguiente(self,cmdsiguiente,p,x,cargado,cantidadregistros):
if x < cantidadregistros:
x=x+1
cargado="no"
self. __init__(p,x,cargado)
def anterior(self,cmdanterior,p,x,cargado):
if x > 1:
x=x-1
cargado="no"
self. __init__(p,x,cargado)
def nuevo(self,cmdnuevo,p,x,cargado):
p=["","","","","","","","","","","","","","","","",""]
cargado="no"
self. __init__(p,x,cargado)
def guardar(self,cmdguardar,p,x,cargado,datos,archivo):
f=open("agenda",'r')
lista1=f.readlines()
f.close()
# EN CASO DE ESTAR CREANDO UN REGISTRO NUEVO SE LE ASIGNA UN NOMBE
DE ARCHIVO.
# SI ES UN REGISTRO ANTERIOR MANTIENE EL MISMO NOMBRE.
if cargado == "no":
f=open("nombre_archivo",'r')
archivo=f.readline(1)
f.close()
archivo = int(archivo) + 1
f=open("nombre_archivo",'w')
f.write(str(archivo))
f.close()
archivo = str(archivo) + ".psi"
# GUARDO LOS DATOS DEL REGISTRO CREADO O MODIFICADO
f=open(archivo,'w')
for v in range(0,17):
f.write(datos[v]+'\n')
f.close()
# SOLO SE MODIFICA LA AGENDA CUANDO SE CREA UN NUEVO REGISTRO
if cargado == "no":
# EN CASO DE QUE SE MODIFIQUE EL NOMBRE Y/O APELLIDO DEBE
MODIFICARSE EL ARCHIVO AGENDA
# TAMBIEN SE MODIFICA AL CREAR UN ARCHIVO NUEVO
datos[0]=datos[0]+" "
datos[1]=datos[1]+" "
nuevo=datos[0][:10]+" "+datos[1][:15]+" No. de ingreso: "+archivo[:
-4]
nombreantiguo = " No. de ingreso: "+archivo[:-4]+"\n"
f=open("agenda",'w')
for x in range (len(lista1)):
# EN CASO DE QUE SE MODIFIQUE NOMBRE Y/O APELLIDO NO DEBE QUEDAR
DUPLICADO EL REGISTRO
# EN EL ARCHIVO AGENDA CON LOS DOS NOMBRES
if lista1[x][26:] == nombreantiguo:
lista1[x] = ""
# SE GUARDAN LOS DATOS EN ORDEN ALFABETICO
if nuevo < lista1[x]:
f.write(nuevo+'\n')
for z in range(x,len(lista1)):
f.write(lista1[z])
f.close()
elif nuevo > lista1[x]:
f.write(lista1[x])
f.write(nuevo+'\n')
f.close()
self. __init__(p,x,cargado)
def eliminar(self,cmdsiguiente,archivo,datoagenda,p,x,cargado):
# SE ELIMINA UN REGISTRO DADO. PARA ELLO SE CAMBIA LA EXTENSION A .BAK
# LO CUAL POSIBILITA RECUPERAR LOS DATOS.
if cargado == "si":
os.system("mv "+archivo+" "+archivo[:-4]+".bak")
f=open("agenda",'r')
lista=f.readlines()
f.close()
f=open("agenda",'w')
for v in range(len(lista)):
if lista[v] <> datoagenda:
f.write(lista[v])
f.close()
p=["","","","","","","","","","","","","","","","",""]
x=0
self. __init__(p,x,cargado)
def main():
gtk.main()
# return 0
if __name__ == "__main__":
hc(p,x,cargado)
main()
More information about the Olpc-uruguay
mailing list