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

jueves, 24 de junio de 2021

Ejercicios Practicos Python

En el video podras ver la solucion a estos ejercicios para practicar con Python.

1. Mostrar el importe del IVA de un articulo con un valor de 80 junto con su precio final.

2. Crea una variable numerica, si esta entre 0 y 20 mostrar un mensaje.

3. Mostrar con un bucle while los numeros del 10 al 50.

4. Mostrar con un bucle for los numeros del 200 al 300.

5. Generar un rango entre 0 y 10.

6. Generar un rango desde 0 hasta la longitud de toda esta cadena.

7. Dada una cadena indicar si es palindromo o no.

8. Definir una funcion que calcule la longitud de una cadena dada.

9. Definir una funcion que calcule la suma y multiplicacion de una lista.

10. Definir funcion que muestre una cadena al reves.

11. Definir funcion que indique si el caracter pasado es vocal o no.

12. Definir funcion para devolver un caracter x veces.



domingo, 20 de junio de 2021

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


lunes, 14 de junio de 2021

Modificar y borrar datos en SQLite con Python

 



Codigo completo:

import sqlite3


def conectar():
    conexion = sqlite3.connect("miBD.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,
            telefono VARCHAR(14) 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,telefono) VALUES (?,?)
    """
    if(cursor.execute(sqldatos)):
        print("Datos guardados")
    else:
        print("No se pudieron guardar los datos")
    conexion.commit()
    conexion.close()


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


def modificar(idtelefono):
    conexioncursor = conectar()
    sql = "UPDATE agenda SET TELEFONO="+telefono+" where ID="+id
    cursor.execute(sql)
    cursor.close()
    conexion.commit()
    conexion.close()


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


crearTabla()
datos = ("Jose""568402258")
insertar(datos)
datos = ("Lucia""468402258")
insertar(datos)
datos = ("M Mar""588402258")
insertar(datos)
datos = ("Eva""467902258")
insertar(datos)
consultar()
modificar("4""02323000")
consultar()
borrar("3")
consultar()

Insertar y consultar datos en SQLite desde Python

 



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


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

Creacion de archivo de base de datos y primera tabla con #SQLite y #Python

 



import sqlite3


def conectar():
    conexion = sqlite3.connect("miBD.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,
            telefono VARCHAR(14) NOT NULL
        )
    """
    if(cursor.execute(sql)):
        print("Tabla creada")
    else:
        print("No se pudo crear la tabla")
    conexion.close()

domingo, 13 de junio de 2021

Barra de menu con tkinter en Python

 




from tkinter import *
from tkinter import messagebox


def salir():
    opcion = messagebox.askquestion("Salir""Quieres salir de la aplicacion")
    # print(opcion)
    if opcion == "yes":
        ventana.destroy()


ventana = Tk()
ventana.geometry("640x520")
barraMenu = Menu(ventana)
ventana.config(menu=barraMenu)
menuArchivo = Menu(barraMenutearoff=0)
menuArchivo.add_command(label="Abrir")
menuArchivo.add_separator()
menuArchivo.add_command(label="Salir"command=salir)
menuAyuda = Menu(barraMenutearoff=0)
menuAyuda.add_command(label="Acerca de")
barraMenu.add_cascade(label="Archivo"menu=menuArchivo)
barraMenu.add_cascade(label="Ayuda"menu=menuAyuda)
ventana.mainloop()

Widget spinbox o combo con tkinter

 


from tkinter import *
from tkinter import messagebox


def mostrar():
    messagebox.showinfo("Mensaje""El valor seleccionado es : "+valor.get())


ventana = Tk()
ventana.geometry("640x520")
valor = StringVar()
etiqueta = Label(ventanatext="Spinbox").place(x=20y=20)
combo = Spinbox(ventanafrom_=1to=10textvariable=valor).place(x=20y=60)
boton = Button(ventanatext="Valor "command=mostrar).place(x=20y=100)
ventana.mainloop()


Ventana informativa, messagebox con tkinter en Python

 



from tkinter import *
from tkinter import messagebox


def info():
    messagebox.showinfo("Mensaje""Menasaje desde messagebox")


def advertencia():
    messagebox.showwarning("Mensaje""Mensaje de advertencia")


def pregunta():
    messagebox.askyesno("Mensaje""Quieres continuar?")


ventana = Tk()
ventana.geometry("640x520")
boton1 = Button(ventanatext="Info"command=info).place(x=20y=100)
boton2 = Button(ventanatext="Advertencia",
                command=advertencia).place(x=20y=140)
boton3 = Button(ventanatext="Pregunta"command=pregunta).place(x=20y=180)
ventana.mainloop()

Texto ampliado e imagen usando tkinter y pillow con Python

 



from tkinter import *
ventana = Tk()
ventana.title("Texto caja grande")
ventana.geometry("100x100")
frame = Frame()
frame.pack()
scrollY = Scrollbar(frame)
scrollY.pack(side=RIGHTfill=Y)
texto = Text(frame)
texto.config(width=50height=50bg="red")
texto.pack(expand=YESfill=BOTH)
texto.insert(0.0"texto inicial")
texto.config(yscrollcommand=scrollY.set)
scrollY.config(command=texto.yview)

ventana.mainloop()




from tkinter import *
from PIL import ImageTk, Image

ventana = Tk()
ventana.geometry("640x520")
imagen = ImageTk.PhotoImage(Image.open("logo_python.jpg"))
imgLabel = Label(ventanaimage=imagen).place(x=100y=150)
ventana.mainloop()