Mostrando entradas con la etiqueta contacto. Mostrar todas las entradas
Mostrando entradas con la etiqueta contacto. Mostrar todas las entradas

lunes, 26 de febrero de 2018

35 Python. Agenda de contactos parte 6 Buscar Datos

Preparamos nuestra aplicacion para realizar busquedas en Sqlite y mostrarla en caso de que exista.



Agenda


#AGENDA PYTHON
#CON SQLITE
#IMPORTA MODULO
from tkinter import *
from BDatos import *
from tkinter import messagebox
#VARIABLES
listado=[]
ANCHO=560
ALTO=540
POSX=400
POSY=400
anchoAlto=(str(ANCHO)+"x"+str(ALTO))
posicionX="+"+str(POSX)
posicionY="+"+str(POSY)
colorVentana="blue"
colorFondo="blue"
colorLetra="white"
#funcion pruebas
def mostrarMensaje():
    print("Pruebas")
#FUNCIONES
def mensaje(titulo,texto):
    messagebox.showinfo(titulo,texto)
def listar():
    if(len(listado)>0):
        #borra lista
        listado.clear()
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    consulta.execute("SELECT id,nombre,apellidos,telefono,email from agenda")
    for i in consulta:
            id=(i[0])
            nombre=(i[1])
            apellidos=(i[2])
            telefono=(i[3])
            email=(i[4])
            listado.append(i)
            listado.sort()
    conexion.close()
    try:
        textLista.delete(1.0,END)
    except:
        mensaje("Listado","error en listado")
    textLista.insert(INSERT,"id\tNombre\t\tApellidos\t\tTelefono\n")
    for elemento in listado:
        id=elemento[0]
        nombre=elemento[1]
        apellidos=elemento[2]
        telefono=elemento[3]
        textLista.insert(INSERT,id)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,nombre)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,apellidos)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,telefono)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,"\n")
       
       
               
def limpiar():
    ID.set("")
    nombre.set("")
    apellidos.set("")
    telefono.set("")
    email.set("")
def guardar():
    no=nombre.get()
    ap=apellidos.get()
    tf=telefono.get()
    em=email.get()
    if((no=="")or(ap=="")):
        mensaje("Guardar","Faltan datos")
    else:
        limpiar()
        creaTabla()
        inserta(no,ap,tf,em)
        mensaje("Guardar","Datos guardados")
    listar()
def modificar():
    id=ID.get()
    no=nombre.get()
    ap=apellidos.get()
    tf=telefono.get()
    em=email.get()
    if((no=="")or(ap=="")or(id=="")):
        mensaje("Modificar","Faltan datos")
    else:
        try:
            limpiar()
            modifica(id,no,ap,tf,em)
            mensaje("Modificar","Contacto modificado")
            listar()
        except:
            mensaje("Modificar","Error al modificar")
def borrar():
    try:
        id=ID.get()   
        if(id==""):
            mensaje("Borrar","Debes insertar el codigo")
        else:
            borra(id)
            limpiar()
            listar()
            mensaje("Borrar","Mensaje borrado")
    except:
        mensaje("Error","Error al borrar, inserta codigo")
def buscar():
    id=ID.get()
    if (id==""):
        mensaje("Buscar","Inserta identificador")
    else:
        tupla=busca(id)
        nombre.set(tupla[0])
        apellidos.set(tupla[1])
        telefono.set(tupla[2])
        email.set(tupla[3])
        mensaje("Buscar","Contacto encontrado")
#VENTANA
ventana=Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title("Agenda")
#Variables cajas
ID=IntVar()
nombre=StringVar()
apellidos=StringVar()
telefono=StringVar()
email=StringVar()
#Widgets
etiquetaID=Label(ventana,text="ID:").place(x=50,y=50)
cajaID=Entry(ventana,textvariable=ID).place(x=130,y=50)
etiquetaNombre=Label(ventana,text="Nombre:").place(x=50,y=90)
cajaNombre=Entry(ventana,textvariable=nombre).place(x=130,y=90)
etiquetaApellidos=Label(ventana,text="Apellidos:").place(x=50,y=130)
cajaApellidos=Entry(ventana,textvariable=apellidos).place(x=130,y=130)
etiquetaTelefono=Label(ventana,text="Telefono:").place(x=50,y=170)
cajaTelefono=Entry(ventana,textvariable=telefono).place(x=130,y=170)
etiquetaEmail=Label(ventana,text="Email:").place(x=50,y=210)
cajaEmail=Entry(ventana,textvariable=email).place(x=130,y=210)
textLista=Text(ventana)
textLista.place(x=50,y=240,width=400,height=200)
#Botones
botonAñadir=Button(ventana,text="Añadir",command=guardar).place(x=150,y=500)
botonBorrar=Button(ventana,text="Borrar",command=borrar).place(x=200,y=500)
botonBuscar=Button(ventana,text="Buscar",command=buscar).place(x=250,y=500)
botonModificar=Button(ventana,text="Modificar",command=modificar).place(x=300,y=500)
listar()
ventana.mainloop()
BDatos


#SQLITE
import sqlite3
from tkinter import messagebox
#CREA TABLA
def creaTabla():
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    sql="""CREATE TABLE IF NOT EXISTS agenda(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 nombre VARCHAR(20) NOT NULL, apellidos VARCHAR(20) NOT NULL, telefono VARCHAR(14) NOT NULL,
 email VARCHAR(20) NOT NULL)"""
    if(consulta.execute(sql)):
        print("Tabla creada")
    else:
        print("No se pudo crear la tabla")
    conexion.close()
#INSERTAR DATOS
def inserta(nombre,apellidos,telefono,email):
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    datos=(nombre,apellidos,telefono,email)
    sql="""INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)"""
    if(consulta.execute(sql,datos)):
         print("Datos guardados")
    else:
        print("No se pudo guardar el dato")
    conexion.commit()
    conexion.close()
def modifica(id,nombre,apellidos,telefono,email):
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    consulta.execute("""UPDATE agenda SET nombre = ?,apellidos = ?,
telefono = ?,email = ? WHERE id= ?""",(nombre,apellidos,telefono,email, str(id)))
    consulta.close()
    conexion.commit()
    conexion.close()
#BORRAR DATOS
def borra(id):
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    consulta.execute("DELETE from agenda WHERE id="+str(id))
    consulta.close()
    conexion.commit()
    conexion.close()
#BUSCAR DATOS
def busca(id):
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    try:
        consulta.execute("SELECT * FROM agenda WHERE id="+str(id))
        for i in consulta:
            nombre=i[1]
            apellidos=i[2]
            telefono=i[3]
            email=i[4]
            return (nombre,apellidos,telefono,email)
        conexion.commit()
        conexion.close()
    except:
        messagebox.shorinfo("Buscar","Error al buscar")


   

sábado, 24 de febrero de 2018

33 Python. Agenda de contactos parte 4 Modificar Datos

Añadimos funcion para modificar los registros de nuestra base de datos.




BDatos
#SQLITE
import sqlite3
#CREA TABLA
def creaTabla():
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    sql="""CREATE TABLE IF NOT EXISTS agenda(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 nombre VARCHAR(20) NOT NULL, apellidos VARCHAR(20) NOT NULL, telefono VARCHAR(14) NOT NULL,
 email VARCHAR(20) NOT NULL)"""
    if(consulta.execute(sql)):
        print("Tabla creada")
    else:
        print("No se pudo crear la tabla")
    conexion.close()
#INSERTAR DATOS
def inserta(nombre,apellidos,telefono,email):
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    datos=(nombre,apellidos,telefono,email)
    sql="""INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)"""
    if(consulta.execute(sql,datos)):
         print("Datos guardados")
    else:
        print("No se pudo guardar el dato")
    conexion.commit()
    conexion.close()
def modifica(id,nombre,apellidos,telefono,email):
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    consulta.execute("""UPDATE agenda SET nombre = ?,apellidos = ?,
telefono = ?,email = ? WHERE id= ?""",(nombre,apellidos,telefono,email, str(id)))
    consulta.close()
    conexion.commit()
    conexion.close()

Agenda
#AGENDA PYTHON
#CON SQLITE
#IMPORTA MODULO
from tkinter import *
from BDatos import *
from tkinter import messagebox
#VARIABLES
listado=[]
ANCHO=560
ALTO=540
POSX=400
POSY=400
anchoAlto=(str(ANCHO)+"x"+str(ALTO))
posicionX="+"+str(POSX)
posicionY="+"+str(POSY)
colorVentana="blue"
colorFondo="blue"
colorLetra="white"
#funcion pruebas
def mostrarMensaje():
    print("Pruebas")
#FUNCIONES
def mensaje(titulo,texto):
    messagebox.showinfo(titulo,texto)
def listar():
    if(len(listado)>0):
        #borra lista
        listado.clear()
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    consulta.execute("SELECT id,nombre,apellidos,telefono,email from agenda")
    for i in consulta:
            id=(i[0])
            nombre=(i[1])
            apellidos=(i[2])
            telefono=(i[3])
            email=(i[4])
            listado.append(i)
            listado.sort()
    conexion.close()
    try:
        textLista.delete(1.0,END)
    except:
        mensaje("Listado","error en listado")
    textLista.insert(INSERT,"id\tNombre\t\tApellidos\t\tTelefono\n")
    for elemento in listado:
        id=elemento[0]
        nombre=elemento[1]
        apellidos=elemento[2]
        telefono=elemento[3]
        textLista.insert(INSERT,id)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,nombre)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,apellidos)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,telefono)
        textLista.insert(INSERT,"\t")
        textLista.insert(INSERT,"\n")
       
       
               
def limpiar():
    ID.set("")
    nombre.set("")
    apellidos.set("")
    telefono.set("")
    email.set("")
def guardar():
    no=nombre.get()
    ap=apellidos.get()
    tf=telefono.get()
    em=email.get()
    if((no=="")or(ap=="")):
        mensaje("Guardar","Faltan datos")
    else:
        limpiar()
        creaTabla()
        inserta(no,ap,tf,em)
        mensaje("Guardar","Datos guardados")
    listar()
def modificar():
    id=ID.get()
    no=nombre.get()
    ap=apellidos.get()
    tf=telefono.get()
    em=email.get()
    if((no=="")or(ap=="")or(id=="")):
        mensaje("Modificar","Faltan datos")
    else:
        try:
            limpiar()
            modifica(id,no,ap,tf,em)
            mensaje("Modificar","Contacto modificado")
            listar()
        except:
            mensaje("Modificar","Error al modificar")
#VENTANA
ventana=Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title("Agenda")
#Variables cajas
ID=IntVar()
nombre=StringVar()
apellidos=StringVar()
telefono=StringVar()
email=StringVar()
#Widgets
etiquetaID=Label(ventana,text="ID:").place(x=50,y=50)
cajaID=Entry(ventana,textvariable=ID).place(x=130,y=50)
etiquetaNombre=Label(ventana,text="Nombre:").place(x=50,y=90)
cajaNombre=Entry(ventana,textvariable=nombre).place(x=130,y=90)
etiquetaApellidos=Label(ventana,text="Apellidos:").place(x=50,y=130)
cajaApellidos=Entry(ventana,textvariable=apellidos).place(x=130,y=130)
etiquetaTelefono=Label(ventana,text="Telefono:").place(x=50,y=170)
cajaTelefono=Entry(ventana,textvariable=telefono).place(x=130,y=170)
etiquetaEmail=Label(ventana,text="Email:").place(x=50,y=210)
cajaEmail=Entry(ventana,textvariable=email).place(x=130,y=210)
textLista=Text(ventana)
textLista.place(x=50,y=240,width=400,height=200)
#Botones
botonAñadir=Button(ventana,text="Añadir",command=guardar).place(x=150,y=500)
botonBorrar=Button(ventana,text="Borrar",command=mostrarMensaje).place(x=200,y=500)
botonBuscar=Button(ventana,text="Buscar",command=mostrarMensaje).place(x=250,y=500)
botonModificar=Button(ventana,text="Modificar",command=modificar).place(x=300,y=500)

ventana.mainloop()




jueves, 22 de febrero de 2018

31 Python. Agenda de contactos parte 2

Como veras, en esta entrada, creamos el modulo que ejecutara las funciones necesarias para el manejo de la base de datos Sqlite (creacion, insercion, modificacion, borrado y busqueda).
Para ello creamos un nuevo archivo (BDatos).



El codigo resultante de los 2 archivos es el siguiente:

BDatos
#SQLITE
import sqlite3
#CREA TABLA
def creaTabla():
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    sql="""CREATE TABLE IF NOT EXISTS agenda(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 nombre VARCHAR(20) NOT NULL, apellidos VARCHAR(20) NOT NULL, telefono VARCHAR(14) NOT NULL,
 email VARCHAR(20) NOT NULL)"""
    if(consulta.execute(sql)):
        print("Tabla creada")
    else:
        print("No se pudo crear la tabla")
    conexion.close()
#INSERTAR DATOS
def inserta(nombre,apellidos,telefono,email):
    conexion=sqlite3.connect("agenda.db")
    consulta=conexion.cursor()
    datos=(nombre,apellidos,telefono,email)
    sql="""INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)"""
    if(consulta.execute(sql,datos)):
         print("Datos guardados")
    else:
        print("No se pudo guardar el dato")
    conexion.commit()
    conexion.close()

Agenda

 #AGENDA PYTHON
#CON SQLITE
#IMPORTA MODULO
from tkinter import *
from BDatos import *
from tkinter import messagebox
#VARIABLES
ANCHO=560
ALTO=540
POSX=400
POSY=400
anchoAlto=(str(ANCHO)+"x"+str(ALTO))
posicionX="+"+str(POSX)
posicionY="+"+str(POSY)
colorVentana="blue"
colorFondo="blue"
colorLetra="white"
#funcion pruebas
def mostrarMensaje():
    print("Pruebas")
#FUNCIONES
def limpiar():
    ID.set("")
    nombre.set("")
    apellidos.set("")
    telefono.set("")
    email.set("")
def guardar():
    no=nombre.get()
    ap=apellidos.get()
    tf=telefono.get()
    em=email.get()
    if((no=="")or(ap=="")):
        print("Faltan datos")
    else:
        limpiar()
        creaTabla()
        inserta(no,ap,tf,em)
        print("Datos guardados")
#VENTANA
ventana=Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title("Agenda")
#Variables cajas
ID=IntVar()
nombre=StringVar()
apellidos=StringVar()
telefono=StringVar()
email=StringVar()
#Widgets
etiquetaID=Label(ventana,text="ID:").place(x=50,y=50)
cajaID=Entry(ventana,textvariable=ID).place(x=130,y=50)
etiquetaNombre=Label(ventana,text="Nombre:").place(x=50,y=90)
cajaNombre=Entry(ventana,textvariable=nombre).place(x=130,y=90)
etiquetaApellidos=Label(ventana,text="Apellidos:").place(x=50,y=130)
cajaApellidos=Entry(ventana,textvariable=apellidos).place(x=130,y=130)
etiquetaTelefono=Label(ventana,text="Telefono:").place(x=50,y=170)
cajaTelefono=Entry(ventana,textvariable=telefono).place(x=130,y=170)
etiquetaEmail=Label(ventana,text="Email:").place(x=50,y=210)
cajaEmail=Entry(ventana,textvariable=email).place(x=130,y=210)
textLista=Text(ventana)
textLista.place(x=50,y=240,width=400,height=200)
#Botones
botonAñadir=Button(ventana,text="Añadir",command=guardar).place(x=150,y=500)
botonBorrar=Button(ventana,text="Borrar",command=mostrarMensaje).place(x=200,y=500)
botonBuscar=Button(ventana,text="Buscar",command=mostrarMensaje).place(x=250,y=500)
botonModificar=Button(ventana,text="Modificar",command=mostrarMensaje).place(x=300,y=500)

ventana.mainloop()

martes, 20 de febrero de 2018