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

sábado, 26 de junio de 2021

Añade nueva funcionalidad a la agenda con Python

 Añadimos nueva funcion a la agenda para buscar un contacto por su identificador.


El codigo completo es el siguiente:
Script principal::
from tkinter import *
from tkinter import messagebox
from baseDatos import *
ANCHO = 560
ALTO = 540
POSX = 300
POSY = 400
anchoAlto = str(ANCHO)+"x"+str(ALTO)
posicionX = "+"+str(POSX)
posicionY = "+"+str(POSY)
colorVentana = "blue"
colorLetra = "white"


def mostrarMensaje(titulomensaje):
    messagebox.showinfo(titulomensaje)


def limpiarDatos():
    nombre.set("")
    apellidos.set("")
    telefono.set("")
    email.set("")
    ID.set(0)
    text.delete(1.0END)


def guardar():
    crearTabla()
    if((nombre.get() == ""or (apellidos.get() == "")):
        mostrarMensaje("Error""Debes rellenar los datos")
    else:
        datos = nombre.get(), apellidos.get(), telefono.get(), email.get()
        mostrarMensaje("Guardar""Contacto guardado")
        insertar(datos)
        limpiarDatos()
        mostrar()


def actualizar():
    crearTabla()
    if((ID.get() == ""or (ID.get() == 0or (nombre.get() == "")):
        mostrarMensaje("Error""Debes rellenar los datos")
    else:
        try:
            modificar(ID.get(), nombre.get(), apellidos.get(),
                      telefono.get(), email.get())
            mostrarMensaje("Modificar""Contacto modificado")
            limpiarDatos()
            mostrar()
        except:
            mostrarMensaje("Error""Identificador no encontrado")


def eliminar():
    if((ID.get() == ""or (ID.get() == 0)):
        mostrarMensaje("Error""Debes insertar un identificador valido")
    else:
        try:
            borrar(ID.get())
            mostrarMensaje("Borrar""Contacto borrado")
            limpiarDatos()
            mostrar()
        except:
            mostrarMensaje("Error""Identificador no encontrado")


def mostrar():
    listado = consultar()
    text.delete(1.0END)
    text.insert(INSERT"ID\tNombre\tApellidos\t\tTelefono\tEmail\n")
    for elemento in listado:
        id = elemento[0]
        nombre = elemento[1]
        apellidos = elemento[2]
        telefono = elemento[3]
        email = elemento[4]
        text.insert(INSERTid)
        text.insert(INSERT"\t")
        text.insert(INSERTnombre)
        text.insert(INSERT"\t")
        text.insert(INSERTapellidos)
        text.insert(INSERT"\t\t")
        text.insert(INSERTtelefono)
        text.insert(INSERT"\t")
        text.insert(INSERTemail)
        text.insert(INSERT"\n")


def buscar():
    if((ID.get() == ""or (ID.get() == 0)):
        mostrarMensaje("Error""Debes insertar un identificador valido")
    else:
        contactos = dameContacto(ID.get())
        for contacto in contactos:
            ID.set(contacto[0])
            nombre.set(contacto[1])
            apellidos.set(contacto[2])
            telefono.set(contacto[3])
            email.set(contacto[4])
        mostrarMensaje("Buscar""Contacto encontrado")


ventana = Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title("Agenda")
frame = Frame()
frame.config(width=ANCHOheight=ALTO)
frame.config(bg=colorVentana)
frame.pack()
# variables
ID = IntVar()
nombre = StringVar()
apellidos = StringVar()
telefono = StringVar()
email = StringVar()
# widgets
etiquetaID = Label(frametext="ID: ").place(x=50y=50)
cajaID = Entry(frametextvariable=ID).place(x=130y=50)
etiquetaNombre = Label(frametext="Nombre: ").place(x=50y=90)
cajaNombre = Entry(frametextvariable=nombre).place(x=130y=90)
etiquetaApellidos = Label(frametext="Apellidos: ").place(x=50y=130)
cajaApellidos = Entry(frametextvariable=apellidos).place(x=130y=130)
etiquetaTelefono = Label(frametext="Telefono: ").place(x=50y=170)
cajaTelefono = Entry(frametextvariable=telefono).place(x=130y=170)
etiquetaEmail = Label(frametext="Email: ").place(x=50y=210)
cajaEmail = Entry(frametextvariable=email).place(x=130y=210)
text = Text(frame)
text.place(x=50y=240width=500height=200)
botonAñadir = Button(frametext="Añadir",
                     command=guardar).place(x=150y=500)
botonBorrar = Button(frametext="Borrar",
                     command=eliminar).place(x=200y=500)
botonConsultar = Button(frametext="Consultar",
                        command=mostrar).place(x=250y=500)
botonModificar = Button(frametext="Actualizar",
                        command=actualizar).place(x=320y=500)
botonBuscar = Button(frametext="Buscar"command=buscar).place(x=390y=500)
ventana.mainloop()


Script base de datos:
import sqlite3


def conectar():
    conexion = sqlite3.connect("agenda.db")
    cursor = conexion.cursor()
    return conexioncursor


def crearTabla():
    conexioncursor = conectar()
    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(cursor.execute(sql)):
        print("Tabla creada")
    else:
        print("No se pudo crear la tabla")
    conexion.close()


def insertar(datos):
    conexioncursor = conectar()
    sql = """
    INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)
    """
    if(cursor.execute(sqldatos)):
        print("Datos guardados")
    else:
        print("No se pudieron guardar los datos")
    conexion.commit()
    conexion.close()


def consultar():
    conexioncursor = conectar()
    sql = "SELECT id,nombre,apellidos,telefono,email from agenda"
    cursor.execute(sql)
    listado = []
    for fila in cursor:
        listado.append(fila)
        # print("ID = ", fila[0])
        # print("Nombre = ", fila[1])
        # print("Telefono = ", fila[2], "\n")
    listado.sort()
    conexion.close()
    return listado


def dameContacto(id):
    conexioncursor = conectar()
    sql = "SELECT * from agenda where id="+str(id)
    cursor.execute(sql)
    contacto = cursor.fetchall()
    conexion.close()
    return contacto


def modificar(idnombreapellidostelefonoemail):
    conexioncursor = conectar()
    sql = "UPDATE agenda SET nombre='"+nombre+"',apellidos='"+apellidos + \
        "', telefono='"+telefono+"', email='"+email+"' where ID="+str(id)
    cursor.execute(sql)
    cursor.close()
    conexion.commit()
    conexion.close()


def borrar(id):
    conexioncursor = conectar()
    sql = "DELETE from agenda where ID="+str(id)
    cursor.execute(sql)
    cursor.close()
    conexion.commit()
    conexion.close()

sábado, 19 de junio de 2021

Ejercicio practico, Agenda con Tkinter y SQLite en Python

 


#Script principal

from tkinter import *
from tkinter import messagebox
from baseDatos import *
ANCHO = 560
ALTO = 540
POSX = 300
POSY = 400
anchoAlto = str(ANCHO)+"x"+str(ALTO)
posicionX = "+"+str(POSX)
posicionY = "+"+str(POSY)
colorVentana = "blue"
colorLetra = "white"


def mostrarMensaje(titulomensaje):
    messagebox.showinfo(titulo, mensaje)


def limpiarDatos():
    nombre.set("")
    apellidos.set("")
    telefono.set("")
    email.set("")
    ID.set(0)
    text.delete(1.0, END)


def guardar():
    crearTabla()
    if((nombre.get() == ""or (apellidos.get() == "")):
        mostrarMensaje("Error""Debes rellenar los datos")
    else:
        datos = nombre.get(), apellidos.get(), telefono.get(), email.get()
        mostrarMensaje("Guardar""Contacto guardado")
        insertar(datos)
        limpiarDatos()
        mostrar()


def actualizar():
    crearTabla()
    if((ID.get() == ""or (ID.get() == 0or (nombre.get() == "")):
        mostrarMensaje("Error""Debes rellenar los datos")
    else:
        try:
            modificar(ID.get(), nombre.get(), apellidos.get(),
                      telefono.get(), email.get())
            mostrarMensaje("Modificar""Contacto modificado")
            limpiarDatos()
            mostrar()
        except:
            mostrarMensaje("Error""Identificador no encontrado")


def eliminar():
    if((ID.get() == ""or (ID.get() == 0)):
        mostrarMensaje("Error""Debes insertar un identificador valido")
    else:
        try:
            borrar(ID.get())
            mostrarMensaje("Borrar""Contacto borrado")
            limpiarDatos()
            mostrar()
        except:
            mostrarMensaje("Error""Identificador no encontrado")


def mostrar():
    listado = consultar()
    text.delete(1.0, END)
    text.insert(INSERT, "ID\tNombre\tApellidos\t\tTelefono\tEmail\n")
    for elemento in listado:
        id = elemento[0]
        nombre = elemento[1]
        apellidos = elemento[2]
        telefono = elemento[3]
        email = elemento[4]
        text.insert(INSERT, id)
        text.insert(INSERT, "\t")
        text.insert(INSERT, nombre)
        text.insert(INSERT, "\t")
        text.insert(INSERT, apellidos)
        text.insert(INSERT, "\t\t")
        text.insert(INSERT, telefono)
        text.insert(INSERT, "\t")
        text.insert(INSERT, email)
        text.insert(INSERT, "\n")


ventana = Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title("Agenda")
frame = Frame()
frame.config(width=ANCHO, height=ALTO)
frame.config(bg=colorVentana)
frame.pack()
# variables
ID = IntVar()
nombre = StringVar()
apellidos = StringVar()
telefono = StringVar()
email = StringVar()
# widgets
etiquetaID = Label(frame, text="ID: ").place(x=50y=50)
cajaID = Entry(frame, textvariable=ID).place(x=130y=50)
etiquetaNombre = Label(frame, text="Nombre: ").place(x=50y=90)
cajaNombre = Entry(frame, textvariable=nombre).place(x=130y=90)
etiquetaApellidos = Label(frame, text="Apellidos: ").place(x=50y=130)
cajaApellidos = Entry(frame, textvariable=apellidos).place(x=130y=130)
etiquetaTelefono = Label(frame, text="Telefono: ").place(x=50y=170)
cajaTelefono = Entry(frame, textvariable=telefono).place(x=130y=170)
etiquetaEmail = Label(frame, text="Email: ").place(x=50y=210)
cajaEmail = Entry(frame, textvariable=email).place(x=130y=210)
text = Text(frame)
text.place(x=50y=240width=500height=200)
botonAñadir = Button(frame, text="Añadir",
                     command=guardar).place(x=150y=500)
botonBorrar = Button(frame, text="Borrar",
                     command=eliminar).place(x=200y=500)
botonConsultar = Button(frame, text="Consultar",
                        command=mostrar).place(x=250y=500)
botonModificar = Button(frame, text="Actualizar",
                        command=actualizar).place(x=320y=500)
ventana.mainloop()

#Script base de datos

import sqlite3


def conectar():
    conexion = sqlite3.connect("agenda.db")
    cursor = conexion.cursor()
    return conexion, cursor


def crearTabla():
    conexion, cursor = conectar()
    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(cursor.execute(sql)):
        print("Tabla creada")
    else:
        print("No se pudo crear la tabla")
    conexion.close()


def insertar(datos):
    conexion, cursor = conectar()
    sql = """
    INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)
    """
    if(cursor.execute(sql, datos)):
        print("Datos guardados")
    else:
        print("No se pudieron guardar los datos")
    conexion.commit()
    conexion.close()


def consultar():
    conexion, cursor = conectar()
    sql = "SELECT id,nombre,apellidos,telefono,email from agenda"
    cursor.execute(sql)
    listado = []
    for fila in cursor:
        listado.append(fila)
        # print("ID = ", fila[0])
        # print("Nombre = ", fila[1])
        # print("Telefono = ", fila[2], "\n")
    listado.sort()
    conexion.close()
    return listado


def modificar(idnombreapellidostelefonoemail):
    conexion, cursor = conectar()
    sql = "UPDATE agenda SET nombre='"+nombre+"',apellidos='"+apellidos + \
        "', telefono='"+telefono+"', email='"+email+"' where ID="+str(id)
    cursor.execute(sql)
    cursor.close()
    conexion.commit()
    conexion.close()


def borrar(id):
    conexion, cursor = conectar()
    sql = "DELETE from agenda where ID="+str(id)
    cursor.execute(sql)
    cursor.close()
    conexion.commit()
    conexion.close()


viernes, 6 de diciembre de 2019

97 Python. Agenda contactos

Crea una agenda de contactos con Python.
Incluimos menu de opciones y grabaremos los datos en archivo csv.
Usaremos clases, funciones, metodos, archivos.


El codigo utilizado es el siguiente:
# -*-coding:utf-8 -*-

"""
Created on Fri Dic 06 07:48:08 2019

@author: Jose
"""

#modulos
import csv
import itertools
import re

#clases
class Contacto:
    nuevoId=itertools.count()
    def __init__(self,nombre,apellidos,empresa,fijo,movil):
        self.codigo=next(self.nuevoId)
        self.nombre=nombre
        self.apellidos=apellidos
        self.empresa=empresa
        self.fijo=fijo
        self.movil=movil
class Agenda:
    def __init__(self):
        self.contactos=[]
    def ordenarNombre(self):
        self.contactos.sort(key=lambda contacto: contacto.nombre)
    def ordenarApellidos(self):
        self.contactos.sort(key=lambda contacto: contacto.apellidos)
    def añadir(self,nombre,apellidos,empresa,fijo,movil):
        contacto=Contacto(nombre,apellidos,empresa,fijo,movil)
        self.contactos.append(contacto)
    def mostrarTodos(self):
        self.submenuOrden()
        for contacto in self.contactos:
            self.imprimeContacto(contacto)
    def buscar(self,textoBuscar):
        encontrado=0
        for contacto in self.contactos:
            if(re.findall(textoBuscar,contacto.nombre)) or (re.findall(textoBuscar,contacto.apellidos)):
                self.imprimeContacto(contacto)
                encontrado=encontrado+1
                self.submenuBuscar(contacto.codigo)
        if encontrado==0:
            self.noEncontrado()
    def borrar(self,codigo):
        for contacto in self.contactos:
            if contacto.codigo==codigo:
                print('---*---*---*---*---*---*---*---*')
                print('Quieres borrarlo? (s/n)')
                print('---*---*---*---*---*---*---*---*')
                opcion=str(input(""))
                if opcion=='s' or opcion=='S':
                    print('Borrando contacto!!!')
                    del self.contactos[codigo]
                elif opcion=='n' or opcion=='N':
                    break
    def modificar(self,codigo):
        for contacto in self.contactos:
            if contacto.codigo==codigo:
                del self.contactos[codigo]
                nombre=str(input('Escribe el nombre: '))
                apellidos=str(input('Escribe los apellidos: '))
                empresa=str(input('Escribe la empresa: '))
                fijo=str(input('Escribe el fijo: '))
                movil=str(input('Escribe el movil: '))
                contacto=Contacto(nombre.capitalize(),apellidos.capitalize(),empresa.capitalize(),fijo,movil)
                self.contactos.append(contacto)
                break
    def submenuBuscar(self,codigo):
        print('---*---*---*---*---*---*---*---*')
        print('Quieres (m)odificarlo o (b)orrarlo? ')
        print('---*---*---*---*---*---*---*---*')
        opcion=str(input(""))
        if opcion=='m' or opcion=='M':
            self.modificar(codigo)
        elif opcion=='b' or opcion=='B':
            self.borrar(codigo)
        else:
            print('Continuamos sin realizar modificacion alguna')
    def submenuOrden(self):
        print('---*---*---*---*---*---*---*---*')
        print('Quieres ordenar por (n)ombre o por (a)pellidos?')
        print('---*---*---*---*---*---*---*---*')
        opcion=str(input(""))
        if opcion=='n' or opcion=='N':
            self.ordenarNombre()
        elif opcion=='a' or opcion=='A':
            self.ordenarApellidos()

    def grabar(self):
        with open('agenda.csv','w') as fichero:
            escribir=csv.writer(fichero)
            escribir.writerow(('codigo','nombre','apellidos','empresa','fijo','movil'))
            for contacto in self.contactos:
                escribir.writerow((contacto.codigo,contacto.nombre,contacto.apellidos,contacto.empresa,contacto.fijo,contacto.movil))
    def imprimeContacto(self,contacto):
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
        print('Codigo: {}'.format(contacto.codigo))
        print('Nombre: {}'.format(contacto.nombre))
        print('Apellidos: {}'.format(contacto.apellidos))
        print('Empresa: {}'.format(contacto.empresa))
        print('Fijo: {}'.format(contacto.fijo))
        print('Movil: {}'.format(contacto.movil))        
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
    def noEncontrado(self):
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
        print('Contacto no encontrado')
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
def ejecutar():
    agenda=Agenda()
    try:
        with open('agenda.csv','r') as fichero:
            lector=csv.DictReader(fichero,delimiter=',')
            for fila in lector:
                agenda.añadir(fila['nombre'].capitalize(),fila['apellidos'].capitalize(),fila['empresa'].capitalize(),fila['fijo'].capitalize(),fila['movil'].capitalize())
    except:
        print('Error al abrir fichero o que no existe aun')
    while True:
        menu=str(input("""
        \nSelecciona una opcion\n
        1 Mostrar lista de contactos
        2 Buscar contacto
        3 Añadir contacto
        0 Salir \n\n               
        """))
        if menu=='1':
            agenda.mostrarTodos()
        elif menu=='2':
            texto=str(input('Escribe el texto a buscar en contactos: '))
            agenda.buscar(texto.capitalize())
            agenda.grabar()
        elif menu=='3':
            nombre=str(input('Escribe el nombre: '))
            apellidos=str(input('Escribe los apellidos: '))
            empresa=str(input('Escribe la empresa: '))
            fijo=str(input('Escribe el fijo: '))
            movil=str(input('Escribe el movil: ')) 
            agenda.añadir(nombre.capitalize(),apellidos.capitalize(),empresa.capitalize(),fijo,movil)
            agenda.grabar()
        elif menu=='0':
            print('Hasta pronto!!!')
            agenda.grabar()
            break
        else:
            print('Opcion no valida!!!')
if __name__=='__main__':
    ejecutar()
        

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")