Proyecto Final Pablo Chacon
Proyecto Final Pablo Chacon
Proyecto Final Pablo Chacon
Semana 9
Pablo chacón Rodríguez
26-12-2022
Técnico en informática
Estamos terminando tu participación en la asignatura Programación Avanzada II cuyo logro general es:
utiliza el lenguaje de programación Python en el desarrollo de algoritmos considerando la Programación
Orientada a Objetos, elementos de gestión de bases de datos, la elaboración de interfaces gráficas y
lenguaje MySQL con el objetivo de implementar programas que permitan la automatización de procesos y
el manejo eficiente de la información. A partir de la información que se presenta continuación, desarrolla
las actividades propuestas para dar cierre a tu proceso de aprendizaje en la asignatura. Se quiere abrir una
zapatería en un local del centro de la ciudad, pero antes, se requiere diseñar un sistema de base de datos
de todos los calzados que poseen en el depósito. Dentro de las variables que se registran de cada calzado
se tienen: marca, talla, modelo, color, tipo. Adicionalmente dentro de los requerimientos se pidió que la
base de datos sea implementada en el gestor de base de datos PHPMyAdmin, de forma conjunta con el
lenguaje de programación Python. En función a lo expuesto, completa las actividades siguientes:
1. Describe las clases atributos, objetos que forman parte del sistema. Adicionalmente describa un
constructor de la clase.
2. Implementa en el lenguaje de programación Python, considerando cada uno de los elementos descritos
en la pregunta anterior.
3. Ejecuta la instalación de la librería Tkinter y menciona los métodos que utilizarás en la elaboración de
un formulario
4. Describe el proceso para ejecutar la conexión con una base de datos desde el lenguaje de programación
Python.
5. Describe el proceso de configuración del software MySQL para la creación de una base de datos.
6. A partir del lenguaje de programación Python, ejecuta los comandos para la inserción, eliminación y
actualización de datos
Desarrollo:
Main.py
def main():
root = Tk()
root.wm_title("Zapateria IACC")
app = Ventana(root)
app.mainloop()
if __name__ == "__main__":
main()
class Ventana(Frame):
zapatos = Item()
def __init__(self, master=None):
super().__init__(master,width=900, height=500)
self.master = master
self.pack()
self.create_widgets()
self.llenaDatos()
self.habilitarCajas("disabled")
self.habilitarBtnOper("normal")
self.habilitarBtnGuardar("disabled")
self.id=-1
def habilitarCajas(self,estado):
self.txtMarca.configure(state=estado)
self.txtTalla.configure(state=estado)
self.txtModelo.configure(state=estado)
self.txtColor.configure(state=estado)
self.txtTipo.configure(state=estado)
def habilitarBtnOper(self,estado):
self.btnRegistrar.configure(state=estado)
self.btnModificar.configure(state=estado)
self.btnEliminar.configure(state=estado)
def habilitarBtnGuardar(self,estado):
self.btnGuardar.configure(state=estado)
self.btnCancelar.configure(state=estado)
def limpiarCajas(self):
self.txtMarca.delete(0,END)
self.txtTalla.delete(0,END)
self.txtModelo.delete(0,END)
self.txtColor.delete(0,END)
self.txtTipo.delete(0,END)
def limpiaGrid(self):
self.grid.delete(item)
def llenaDatos(self):
datos = self.zapatos.consulta_item()
self.grid.insert("",END,text=row[0], values=(row[1],row[2],
row[3],row[4],row[5]))
if len(self.grid.get_children()) > 0:
self.grid.selection_set( self.grid.get_children()[0] )
def fRegistrar(self):
self.habilitarCajas("normal")
self.habilitarBtnOper("disabled")
self.habilitarBtnGuardar("normal")
self.limpiarCajas()
self.txtMarca.focus()
def fGuardar(self):
if self.id ==-1:
self.zapatos.inserta_item(self.txtMarca.get(),self.txtTalla.get(),self.txtM
odelo.get(),self.txtColor.get(),self.txtTipo.get())
else:
self.zapatos.modifica_item(self.id,self.txtMarca.get(),self.txtTalla.get(),
self.txtModelo.get(),self.txtColor.get(),self.txtTipo.get())
self.id == -1
self.limpiaGrid()
self.llenaDatos()
self.limpiarCajas()
self.habilitarBtnGuardar("disabled")
self.habilitarBtnOper("normal")
self.habilitarCajas("disabled")
def fModificar(self):
selected = self.grid.focus()
clave = self.grid.item(selected,'text')
if clave == '':
else:
self.id= clave
self.habilitarCajas("normal")
valores = self.grid.item(selected,'values')
self.limpiarCajas()
self.txtMarca.insert(0,valores[0])
self.txtTalla.insert(0,valores[1])
self.txtModelo.insert(0,valores[2])
self.txtColor.insert(0,valores[3])
self.txtTipo.insert(0,valores[4])
self.habilitarBtnOper("disabled")
self.habilitarBtnGuardar("normal")
self.txtMarca.focus()
def fEliminar(self):
selected = self.grid.focus()
clave = self.grid.item(selected,'text')
if clave == '':
else:
valores = self.grid.item(selected,'values')
if r == messagebox.YES:
n = self.zapatos.elimina_item(clave)
if n == 1:
self.limpiaGrid()
self.llenaDatos()
else:
def fCancelar(self):
r = messagebox.askquestion("Calcelar", "Esta seguro que desea
cancelar la operación actual")
if r == messagebox.YES:
self.limpiarCajas()
self.habilitarBtnGuardar("disabled")
self.habilitarBtnOper("normal")
self.habilitarCajas("disabled")
def create_widgets(self):
frame1.place(x=0,y=0,width=900, height=80)
self.btnRegistrar=Button(frame1,text="Registrar",
command=self.fRegistrar, bg="#02D38D", fg="#000000")
self.btnRegistrar.place(x=200,y=15,width=100, height=50)
self.btnModificar=Button(frame1,text="Modificar",
command=self.fModificar, bg="#02D38D", fg="#000000")
self.btnModificar.place(x=370,y=15,width=100, height=50)
self.btnEliminar=Button(frame1,text="Eliminar",
command=self.fEliminar, bg="#02D38D", fg="#000000")
self.btnEliminar.place(x=540,y=15,width=100, height=50)
frame2 = Frame(self,bg="#d3dde3" )
frame2.place(x=10,y=100,width=300, height=395)
lbl1.place(x=5,y=5)
self.txtMarca=Entry(frame2)
self.txtMarca.place(x=3,y=30,width=120, height=20)
lbl2.place(x=5,y=55)
self.txtTalla=Entry(frame2)
self.txtTalla.place(x=3,y=80,width=120, height=20)
lbl3 = Label(frame2,text="Modelo: ")
lbl3.place(x=5,y=105)
self.txtModelo=Entry(frame2)
self.txtModelo.place(x=3,y=130,width=120, height=20)
lbl4.place(x=5,y=155)
self.txtColor=Entry(frame2)
self.txtColor.place(x=3,y=180,width=120, height=20)
lbl5.place(x= 5, y= 205)
self.txtTipo=Entry(frame2)
self.btnGuardar=Button(frame2,text="Guardar",
command=self.fGuardar, bg="green", fg="#000000")
self.btnGuardar.place(x=20,y=260,width=60, height=30)
self.btnCancelar=Button(frame2,text="Cancelar",
command=self.fCancelar, bg="red", fg="#000000")
self.btnCancelar.place(x=90,y=260,width=60, height=30)
frame3.place(x=320,y=100,width=500, height=900)
self.grid = ttk.Treeview(frame3,
columns=("col1","col2","col3","col4","col5"))
self.grid.column("#0",width=50)
self.grid.column("col1",width=60, anchor=CENTER)
self.grid.column("col2",width=90, anchor=CENTER)
self.grid.column("col3",width=90, anchor=CENTER)
self.grid.column("col4",width=90, anchor=CENTER)
self.grid.column("col5",width=90, anchor=CENTER)
self.grid.place(x=320,y=100,width=570, height=900)
self.grid.pack(side=LEFT,fill = Y)
sb = Scrollbar(frame3, orient=VERTICAL)
sb.pack(side=RIGHT, fill = Y)
self.grid.config(yscrollcommand=sb.set)
sb.config(command=self.grid.yview)
self.grid['selectmode']='browse'
En este código se utiliza la librería tkinter la cual se importa al inicio de igual forma se importa otra clase
llamada item la cual proviene del código llamado item.py que es básicamente el que contiene las
funciones de la base de datos:
Item.py
import mysql.connector
class Item():
def __init__(self):
password="admin", database="Zapateria")
def __str__(self):
datos=self.consulta_item()
aux=""
for row in datos:
return aux
def consulta_item(self):
cur = self.cnn.cursor()
datos = cur.fetchall()
cur.close()
return datos
cur = self.cnn.cursor()
cur.execute(sql)
datos = cur.fetchone()
cur.close()
return datos
cur = self.cnn.cursor()
cur.execute(sql)
n=cur.rowcount
self.cnn.commit()
cur.close()
return n
def elimina_item(self,Id):
cur = self.cnn.cursor()
cur.execute(sql)
n=cur.rowcount
self.cnn.commit()
cur.close()
return n
cur = self.cnn.cursor()
cur.execute(sql)
n=cur.rowcount
self.cnn.commit()
cur.close()
return n
Como observamos solo importamos lo que es el conector con la base de datos para hacer uso de esta, de
igual forma solo utilice un código SQL en Python el cual es para la creación de la base de datos y la tabla
que utilice la cree directamente en workbench, ya que de igual forma posee un entorno para escritura de
código SQL.
CrearBD.py
import mysql.connector
cur=conn.cursor()
Pagina inicial:
Ingreso de dato:
Modificación:
Eliminación:
Podemos evidenciar la eficacia del código con lo solicitado en el proyecto. Utilice el entorno de desarrollo
de WorkBench porque es más amigable y cumple la misma función que phpMyAdmin.