El dia de hoy les traigo una entrega nueva, en esta ocación mostrare un pequeño proyecto en el cual he estado trabajando, no es nada robusto ni vistozo pero sirve de ejemplo de clase para el manejo de archivos.
Para este caso desarrolle un pequeño gestor de contactos, una especie de agenda que permite almacenar los registros en archivos .csv y a su vez en formatos .txt, ademas de facilirtar su lectura en el programa una vez guardado el documento.
Capturas:
Codigo:
Para este caso desarrolle un pequeño gestor de contactos, una especie de agenda que permite almacenar los registros en archivos .csv y a su vez en formatos .txt, ademas de facilirtar su lectura en el programa una vez guardado el documento.
Capturas:
Codigo:
# !/usr/bin/env python # -*- coding: utf-8 -*- from Tkinter import * import tkFileDialog import tkMessageBox def mensajes(opc): if opc==1: tkMessageBox.showinfo("Desarrollador", "Nombre: Ambrocio Isaias Laureano Castro\n" "Matricula: 16260626\n" "Carrera: Ing. En Sistemas Computacionales\n" "Materia: Graficación\n" "Maestra: Maria Yolanda Rodriguez Loya") if opc==2: tkMessageBox.showinfo("Frase", "Todo hombre fuerte fue debil alguna vez, asi que la proxima vez que lo pienses no me subestimes" " que aun estoy en el juego") if opc==3: tkMessageBox.showinfo("Decifralo", "Zwkpw si dmzlil icu bm itw, bm ycpmzw g bm mfbzivw. Ap sw lmakpnziabm lpsm ycm si ycpmzw, g ap, mabw ma ail, xmzw uw upmñw tpa amubptpmubwa :D") #-------------------------Funcionalidades del menu------------------------------- def guardar(): global ArchivodeTrabajo, Tabla if ArchivodeTrabajo=="": GuardarComo(2) main.title("Lector de informacion "+ArchivodeTrabajo) sobreescribir() def formatear(): global ArchivodeTrabajo,Tabla if ArchivodeTrabajo!="": file = archivo_en_uso("r") contenido = file.read() if (ArchivodeTrabajo!="" and contenido!=""): accion = tkMessageBox.askyesno("Advertencia","Estas apunto de eliminar el contenido del archivo por completo ¿Deseas continuar?") if accion==True: borrarcontenido() limpiar(1) else: tkMessageBox.showinfo("Advertencia","Este archivo no posee contendio y/o no ha sido guardado con anterioridad") def salir(): global main accion = tkMessageBox.askyesno("Advertencia", "¿Seguro que desea cerrar el programa?\n Todos los cambios no guardados se perderan") if accion == True: main.destroy() #--------------------------Metodos de control de archivo------------------------- def archivo_en_uso(permiso): global ArchivodeTrabajo archivo_en_uso=open(ArchivodeTrabajo,permiso) return archivo_en_uso def leer(): global Tabla Tabla.delete("1.0", END) file=archivo_en_uso("r") contenido=file.read() var_temp =["","",""] control=0 #0 Para nombre, 1 para apellido, 2 para telefono for i in range(len(contenido)-1): #print contenido[i]," = ",ord(contenido[i])," control: ",str(control) if contenido[i]=="," and contenido[i+1]==" ": control=control+1 elif contenido[i]=="\n": control=0 Tabla.insert(INSERT, "\t\t" + str(var_temp[0]) + "\t\t\t\t\t" + str(var_temp[1]) + "\t\t\t\t\t" + str( var_temp[2]) + " \n") var_temp[0]="";var_temp[1]="";var_temp[2]="" elif contenido[i]!="," or contenido[i]!=" ": var_temp[control] = var_temp[control] + contenido[i] file.close() def sobreescribir(): global Tabla file = archivo_en_uso("w") contenido = Tabla.get("1.0", END) var_temp = "" for i in range(len(contenido)): if contenido[i] == "\t" and contenido[i - 1] != "\t" and contenido[i - 1] != "\n": var_temp = var_temp + "," elif contenido[i] != "\t": var_temp = var_temp + str(contenido[i]) file.write(var_temp) file.close() print "Datos Agregados Correctamente" def borrarcontenido(): file=archivo_en_uso("w") file.close() print "Contenido Borrado Correctamente" #---------------------------Metodos para manejor de directorios------------------ def nuevo(): global ArchivodeTrabajo if (ArchivodeTrabajo=="" and Tabla.get("2.0",END)!="\n") or (ArchivodeTrabajo!="" and Tabla.get("2.0",END)!="\n"): accion=tkMessageBox.askyesno("Advertencia","Estas a punto de abrir un nuevo documento, cualquier cambio no guardado en el documento actual se perdera ¿Deseas continuar?") if accion==True: ArchivodeTrabajo = "" limpiar(1) main.title("Lector de informacion: Nuevo Documento") else: ArchivodeTrabajo = "" limpiar(1) main.title("Lector de informacion: Nuevo Documento") def abrir(): global ArchivodeTrabajo, main filename = tkFileDialog.askopenfilename(initialdir="/", title="Select file",filetypes=(("Archivos de Excel", "*.csv"), ("all files", "*.*"))) ArchivodeTrabajo=filename leer() main.title("Lector de informacion "+ArchivodeTrabajo) print ArchivodeTrabajo def GuardarComo(opc): global ArchivodeTrabajo filename = tkFileDialog.asksaveasfile(mode="a",title="Guardar Como",filetypes=(("Archivos de Excel", "*.csv"), ("Archivos de Texto", "*.txt"),("Todos los archivos","*.*")),defaultextension=".csv") ArchivodeTrabajo=filename.name if opc==1: main.title("Lector de informacion "+ArchivodeTrabajo) sobreescribir() #Metodos De los Botones--------------------------------------------------------- def Agregar(nombre,apellido,telefono): global Tabla Tabla.insert(INSERT,"\t\t"+str(nombre.get())+"\t\t\t\t\t "+str(apellido.get())+"\t\t\t\t\t "+str(telefono.get())+" \n") def limpiar(opc): global Tabla,Vnombre,Vapellido,Vtelefono if opc==1: Tabla.delete("1.0",END) Vnombre.set("") Vapellido.set("") Vtelefono.set("") #----------------------------Funcion Main---------------------------------------- ArchivodeTrabajo="" main = Tk() main.title("Lector de informacion: Nuevo Documento") Vnombre = StringVar() Vapellido = StringVar() Vtelefono = StringVar() """Declaracion del menu""" menu = Menu(main) main.config(menu=menu) archivo = Menu(menu, tearoff=0) archivo.add_command(label="Nuevo", command=nuevo) archivo.add_command(label="Abrir", command=abrir) archivo.add_command(label="Guardar", command=guardar) archivo.add_command(label="Guardar Como", command=lambda : GuardarComo(1)) archivo.add_command(label="Formatear Archivo", command=formatear) archivo.add_separator() archivo.add_command(label="Salir",command=salir) Acerca_De = Menu(menu, tearoff=0) """Agregar Opcion Principal a la Barra""" menu.add_cascade(label="Archvio", menu=archivo) Acerca_De.add_command(label="Autor", command=lambda :mensajes(1)) Acerca_De.add_command(label="Frase", command=lambda : mensajes(2)) Acerca_De.add_command(label="Decifralo",command=lambda : mensajes(3)) menu.add_cascade(label="Acerca de",menu=Acerca_De) # ------------------------------------- contenedor = Frame(main, width=1000, height="520").pack() # Declaracion de Elementos graficos titulo = Label(contenedor, text="Servicio de Agenda", font=("Arial", 20), fg="black").place(x=375, y=0) ENombre = Label(contenedor, text="Nombre: ", font=("Arial", 12), fg="black").place(x=10, y=50) CNombre = Entry(contenedor, textvariable=Vnombre, font=("Arial", 12), fg="black", width=20).place(x=90, y=51) EApellido = Label(contenedor, text="Apellido: ", font=("Arial", 12), fg="black").place(x=10, y=90) CApellido = Entry(contenedor, textvariable=Vapellido, font=("Arial", 12), fg="black", width=20).place(x=90, y=91) ETelefono = Label(contenedor, text="Telefono: ", font=("Arial", 12), fg="black").place(x=10, y=130) CTelefono = Entry(contenedor, textvariable=Vtelefono, font=("Arial", 12), fg="black", width=20).place(x=90, y=131) frame = Frame(contenedor) frame.place(x=10, y=170) Ttabla=Label(frame,text="Nombre\t\t\t\t Apellido\t\t\t\tTelefono",font=("Arial", 12) ,fg="black") Ttabla.pack(side=TOP,fill=X) Tabla = Text(frame, width=120, height=20) Tabla.pack(side=LEFT) scrool = Scrollbar(frame, command=Tabla.yview) scrool.pack(side=RIGHT, fill=Y) Tabla.config(yscrollcommand=scrool.set) BAgregar = Button(contenedor, text="Agregar", command=lambda: Agregar(Vnombre, Vapellido, Vtelefono)).place(x=300, y=50) BLimpiar = Button(contenedor, text="Limpiar", command=lambda: limpiar(2)).place(x=300, y=100) main.mainloop()
Comentarios
Publicar un comentario