Hola a todos, ¿cómo andan? soy nuevo en PyAr, quisiera saber si alguien me podría ayudar en mi proyecto escolar (Es un programa de inventario muy sencillo utilizando una base de datos local, la cual es sqlite3) (Acepto cualquier sugerencia para el programa), es un código sencillo el cual no tiene muchas líneas de código valga la redundancia, en lo que necesito ayuda es para poder dividir el programa en 4 clases (Principal, buscar, modificar y eliminar) de ser posible, se los agradecería mucho si me pueden dar una mano ya que por el momento no soy muy bueno en esto y no sabría bien cómo hacerlo, gracias a todos los que ayuden, a continuación les dejo el código de mi proyecto (Dentro del proyecto están los comentarios donde menciona las partes de buscar, modificar y eliminar, uso como editor sublime text 3, Version 3.2.2, Build 3211):
from tkinter import *
from tkinter import messagebox
import sqlite3
#-------------------------------FUNCIONES-----------------------------------------------
def coonexionBBDD():
miConexion=sqlite3.connect("Usuarios")
miCursor=miConexion.cursor()
try:
miCursor.execute('''
CREATE TABLE DATOSUSUARIOS(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NOMBRE_USUARIO VARCHAR (50),
PASSWORD VARCHAR (50),
APELLIDO VARCHAR(10),
DIRECCION VARCHAR(50),
COMENTARIOS VARCHAR(100))
''')
messagebox.showinfo("BBDD", "BBDD creada con éxito")
except:
messagebox.showwarning("!Atención¡", "La BBDD ya existe")
#------------------------------VENTANA PRINCIPAL----------------------------------------------
ventana=Tk()
ventana.title(“Sistema de Inventario”)
ventana.geometry(“900x550”)
ventana.resizable(width=0, height=0)
def agregar():
ventana=Toplevel()
ventana.geometry("450x500")
ventana.title("Agregar Artículo")
e1=Label(ventana, text="Agregar Artículo:", bg="white", fg="black").place(x=50, y=30)
#variable producto
entryarticulo=StringVar()
productox=Entry(ventana, textvariable=entryarticulo).place(x=50, y=120)
#variable precio
entryprecio=StringVar()
preciox=Entry(ventana, textvariable=entryprecio).place(x=50, y=190)
#variablecantidad
entrycantidad=StringVar()
cantidadx=Entry(ventana, textvariable=entrycantidad).place(x=50, y=260)
#variableubicación
entryubicacion=StringVar()
ubicacionx=Entry(ventana, textvariable=entryubicacion).place(x=50, y=330)
#Etiqueta ingresar nombre producto
etiquetanombre=Label(ventana, text="Ingrese el nombre del artículo:", padx=10).place(x=30, y=85)
#Etiquete Precio
etiquetaprecio=Label(ventana, text="Ingrese el precio del artículo:", padx=10).place(x=30, y=160)
#etiqueta cantidad
etiquetacantidad=Label(ventana, text="Ingrese la cantidad del artículo:", padx=10).place(x=30, y=230)
#etiqueta ubicación
etiquetaubicacion=Label(ventana, text="Ingrese la ubicación del artículo:", padx=10).place(x=30, y=300)
#Menu para volver al menu principal
menu=Button(ventana, text="Menu", fg="blue", font=("arial, 12"), command=ventana.destroy)
menu.pack()
menu.place(x=50, y=400)
def guardar():
db=sqlite3.connect("Articulos")
cursor=db.cursor()
datos=entryarticulo.get(), entryprecio.get(), entrycantidad.get(), entryubicacion.get()
valor=messagebox.askokcancel("Agregar Artículo", "¿Deseas agregar este artículo al inventario?")
if valor==True:
cursor.execute("INSERT INTO ARTICULOS VALUES(NULL,?,?,?,?)", (datos))
db.commit()
cursor.close()
messagebox.showinfo("Inventario", "Articulo Agregado con exito")
#BOTON PARA GUARDAR CAMBIOS
botonguardar=Button(ventana, text="Guardar", fg="blue", font=("arial", 12), command=guardar)
botonguardar.pack()
botonguardar.place(x=300, y=400)
#BUSCA LOS ARTICULOS
def buscar_articulo():
ventana=Toplevel()
ventana.geometry("550x450")
ventana.title("Buscar Artículos")
e1=Label(ventana, text="Buscar Artículos:", bg="white", fg="black").place(x=50, y=50)
#ETIQUETAS DEL CODIGO(PARA BUSCAR)
e_codigo=Label(ventana, text="Codigo", bg="white", fg="black").place(x=50, y=70)
e_nombre=Label(ventana, text="Nombre", bg="white", fg="black").place(x=150, y=70)
e_precio=Label(ventana, text="Precio", bg="white", fg="black").place(x=250, y=70)
e_cantidad=Label(ventana, text="cantidad", bg="white", fg="black").place(x=330, y=70)
e_ubicacion=Label(ventana, text="Ubicación", bg="white", fg="black").place(x=420, y=70)
#MOSTAR INFO DE BASE DE DATOS
def mostrar():
#CREAR LISTABOX PARA EL CODIGO DEL PRODUCTO
lista=Listbox(ventana, width=40, font=("arial", 12), height=15)
lista.pack()
db=sqlite3.connect("Articulos")
cursor=db.cursor()
cursor.execute("SELECT * FROM Articulos ORDER BY (codigo)DESC")
#PARA INSERTAR LA CONSULTA
for row in cursor:
lista.insert(0, row[1]+"----------"+row[2]+"$"+"---------"+row[3]+"---------"+row[4])
lista.place(x=150, y=90)
#NOMBRES
lista_1=Listbox(ventana, width=10, font=("arial", 12), height=15)
lista_1.pack()
db=sqlite3.connect("Articulos")
cursor=db.cursor()
cursor.execute("SELECT CODIGO FROM Articulos ORDER BY (codigo)DESC")
for row in cursor:
lista_1.insert(0, row[0])
lista_1.place(x=50, y=90)
#Menu para volver al menu principal
menu=Button(ventana, text="Menu", fg="blue", font=("arial, 12"), command=ventana.destroy)
menu.pack()
menu.place(x=50, y=400)
#BOTON PARA LA CONSULTA
botonMostrar=Button(ventana, text="Mostrar Artículos", fg="blue", font=("arial", 12), command=mostrar)
botonMostrar.pack()
botonMostrar.place(x=280, y=400)
#ELIMINA LOS ARTICULOS
def eliminar_articulo():
ventana=Toplevel()
ventana.geometry(“450x450”)
ventana.title(“Eliminar Artículos”)
e1=Label(ventana, text=“Eliminar Artículo:”, bg=“white”, fg=“black”).place(x=50, y=50)
#VARIABLE PARA ID(UBICACIÓN)
entry_ID=StringVar()
productox=Entry(ventana, textvariable=entry_ID).place(x=50, y=150)
#ETIQUETA ID
etiquetanombre=Label(ventana, text="Ingrese el codigo del artículo:", padx=10).place(x=30, y=115)
#CONEXION BASE DE DATOS
def eliminar():
db=sqlite3.connect("Articulos")
cursor=db.cursor()
id_articulo= entry_ID.get()
valor=messagebox.askokcancel("Borrar Artículo", "¿Deseas borrar este artículo de la base de datos?")
if valor==True:
cursor.execute("DELETE FROM Articulos WHERE CODIGO=('"+id_articulo+"')")
db.commit()
cursor.close()
messagebox.showinfo("INVENTARIO", "Artículo borrado con éxito")
#Menu para volver al menu principal
menu=Button(ventana, text="Menu", fg="blue", font=("arial, 12"), command=ventana.destroy)
menu.pack()
menu.place(x=50, y=350)
#BOTON PARA ELIMINAR
botoneliminar=Button(ventana, text="Eliminar Artículo", fg="red", font=("arial", 12), command=eliminar)
botoneliminar.pack()
botoneliminar.place(x=250, y=350)
#MODIFICA LOS ARTICULOS
def modificar_articulo():
ventana=Toplevel()
ventana.geometry(“450x550”)
ventana.title(“Modificar Artículos”)
e1=Label(ventana, text=“Modificar Artículo:”, bg=“white”, fg=“black”).place(x=50, y=50)
#VARIABLE PARA ID
entry_ID=StringVar()
productox=Entry(ventana, textvariable=entry_ID).place(x=50, y=120)
#ETIQUETA PARA ID
etiquetanombre=Label(ventana, text="Ingrese el codigo del artículo:", padx=10).place(x=30, y=80)
#VARIABLE PARA AGREGAR NUEVO VALOR
entry_valor=StringVar()
valorx=Entry(ventana, textvariable=entry_valor).place(x=50, y=190)
#ETIQUETA PARA EL NUEVO VALOR
etiquetanombre=Label(ventana, text="Ingrese el nuevo precio para el artículo:", padx=10).place(x=30, y=150)
#Variable PARA NUEVO VALOR CANTIDAD
entry_cantidad2=StringVar()
cantidad2x=Entry(ventana, textvariable=entry_cantidad2).place(x=50, y=270)
#ETIQUETA NUEVA CANTIDAD
etiquetanombre=Label(ventana, text="Ingrese la nueva cantidad del artículo:", padx=10).place(x=30, y=230)
#Variable PARA NUEVA UBICACIÓN
entry_ubicacion2=StringVar()
ubicación2x=Entry(ventana, textvariable=entry_ubicacion2).place(x=50, y=350)
#ETIQUETA NUEVA UBICACIÓN
etiquetanombre=Label(ventana, text="Ingrese la nueva ubicación del artículo:", padx=10).place(x=30, y=310)
#CONEXION CON LA BBDD
def actualizar():
db=sqlite3.connect("Articulos")
cursor=db.cursor()
id_producto=entry_ID.get()
nuevo_precio=entry_valor.get()
nueva_cantidad=entry_cantidad2.get()
nueva_ubicacion=entry_ubicacion2.get()
valor=messagebox.askokcancel("Actualizar Artículo", "¿Deseas actualizar la información de este Artículo?")
if valor==True:
cursor.execute("UPDATE Articulos SET PRECIO=('"+nuevo_precio+"'), CANTIDAD=('"+nueva_cantidad+"'), UBICACION=('"+nueva_ubicacion+"') WHERE CODIGO=('"+id_producto+"')")
db.commit()
cursor.close()
messagebox.showwarning("Actualización", "Articulo Actualizado")
#VOLVER A MENU
menu=Button(ventana, text="Menu", fg="blue", font=("arial, 12"), command=ventana.destroy)
menu.pack()
menu.place(x=50, y=450)
#BOTON PARA ACTUALIZAR
botonactulizar=Button(ventana, text="Actualizar Artículo", fg="blue", font=("arial", 12), command=actualizar)
botonactulizar.pack()
botonactulizar.place(x=250, y=450)
def salir_programa():
valor=messagebox.askokcancel(“Salir”, “¿Deseas salir del Programa?”)
if valor==True:
ventana.destroy()
#--------------------------------------BOTONES----------------------------------------------
agregar=Button(ventana, text=“Agregar Artículo”, fg=“blue”, font=(“arial”, 12), borderwidth=5, command=agregar)
agregar.pack()
agregar.place(x=4, y=50)
buscar=Button(ventana, text=“Buscar Artículo”, fg=“blue”, font=(“arial”, 12), borderwidth=5, command=buscar_articulo)
buscar.pack()
buscar.place(x=4, y=150)
modificar=Button(ventana, text=“Modificar Artículo”, fg=“blue”, font=(“arial”, 12), borderwidth=5, command=modificar_articulo)
modificar.pack()
modificar.place(x=4, y=250)
eliminar=Button(ventana, text=“Eliminar Artículo”, fg=“red”, font=(“arial”, 12), borderwidth=5, command=eliminar_articulo)
eliminar.pack()
eliminar.place(x=4, y=350)
crear=Button(ventana, text=“Crear”, fg=“blue”, font=(“arial”, 12), borderwidth=5, command=BBDD)
crear.pack()
crear.place(x=4, y=0)
salir=Button(ventana, text=“SALIR DEL PROGRAMA”, fg=“red”, font=(“arial”, 16), borderwidth=5, command=salir_programa)
salir.pack()
salir.place(x=645, y=501)
ventana.mainloop()
Desde ya muchas gracias, saludos!!