lunes, 14 de mayo de 2018

Ingreso de Personal con interfaz Gráfica - Python / MySQL


En este tema se vera el proceso de ingresar el personal, haciendo uso de las herramientas Pycharm, Python y MySQL Workbench.





- Integrantes:

- Edgar Emmanuel Mendez Ruiz
- Luis Angel Gallegos Gomez
- Gilberto Alejandro Martinez Cortina
- Jonathan Ivan Guzman Jaramillo

A continuacion podras hacer uso del codigo en python y de la base de datos en base a la estructura realizada.

Utilizaremos:

- Instalar el controlador de MySQLdb en python
- Tener instalado MySQL Workbench
- Creación de Procedimientos (Modificar, Agregar, Eliminar)

- Link de la Base de Datos:

https://drive.google.com/open?id=1N21Zoq6cVRVeovSq9rFtrzu7FMq3FUNy


  • Codigo en Python:


#!/usr/bin/python

from tkinter import *
import tkMessageBox
from tkinter import ttk

import MySQLdb

try:
    global db
    global cur

    db = MySQLdb.connect(host="localhost",  # your host, usually localhost
                         user="root",  # your username
                         passwd="tecnologico",  # your password
                         db="personal")  # name of the data base
    cur = db.cursor()
    print("Conexion Correcta")

except MySQLdb.Error as err:
    print("MySQL Error: %s" % str(err))
def inicio():

    cur.execute("SELECT * FROM usuarios")

    # Add content using (where index is the position/row of the treeview)
    # iid is the item index (used to access a specific element in the treeview)
    # you can set iid to be equal to the index

    index = iid = 0
    for row in cur.fetchall():
        treeView.insert("", iid, index, values=row)
        index = iid = index + 1  # Contador de columnas

def add():

    ID = DID.get()
    Nom = Dnom.get()
    Apellido = Dap.get()
    Edad = Ded.get()
    Correo = Dcor.get()
    Area = Darea.get()
    Sueldo = Dsuel.get()

    Datos = [ID, Nom, Apellido, Edad, Correo, Area, Sueldo,'Nuevo Usuario']

    try:
       cur.callproc('UsuariosITM', Datos)
       db.commit()

    except:

       db.rollback()
       tkMessageBox.showinfo("Error en insercion", "Verifique que los campos esten llenos / usuario ya existente")


    for i in treeView.get_children():
        treeView.delete(i)
    inicio()


def elim():

    ID = DID.get()

    Eliminar = [ID, "", "", "", "", "", "",'Eliminar Usuario']

    try:
       cur.callproc('UsuariosITM', Eliminar)
       db.commit()

    except:

       db.rollback()
       tkMessageBox.showinfo("Error en insercion", "Verifique que el campo ID este lleno")


    for i in treeView.get_children():
        treeView.delete(i)
    inicio()

def mod():

    ID = DID.get()
    Nom = Dnom.get()
    Apellido = Dap.get()
    Edad = Ded.get()
    Correo = Dcor.get()
    Area = Darea.get()
    Sueldo = Dsuel.get()

    Modificar = [ID, Nom, Apellido, Edad, Correo, Area, Sueldo, 'Editar Usuario']

    try:
       cur.callproc('UsuariosITM', Modificar)
       db.commit()

    except:

       db.rollback()
       tkMessageBox.showinfo("Error en insercion", "Verifique los campos esten completos")


    for i in treeView.get_children():
        treeView.delete(i)
    inicio()


def VenAgre():

    root = Tk()
    global treeView
    treeView = ttk.Treeview(root)
    treeView.grid(row=0,column=0, columnspan=5)

# Columnas de la tabla del sistema

    treeView["columns"] = ["ID", "Nombre","Apellido","Edad","Correo","AreaT","Sueldo"]
    treeView["show"] = "headings"

    treeView.heading("ID", text="ID")
    treeView.column("ID",minwidth=0,width=70, stretch=NO)

    treeView.heading("Nombre", text="Nombre")
    treeView.column("Nombre",minwidth=0,width=150, stretch=NO)

    treeView.heading("Apellido", text="Apellido")
    treeView.column("Apellido",minwidth=0,width=125, stretch=NO)

    treeView.heading("Edad", text="Edad")
    treeView.column("Edad",minwidth=0,width=50, stretch=NO)

    treeView.heading("Correo", text="Correo")
    treeView.column("Correo",minwidth=0,width=200, stretch=NO)

    treeView.heading("AreaT", text="AreaT")
    treeView.column("AreaT",minwidth=0,width=90, stretch=NO)

    treeView.heading("Sueldo", text="Sueldo")
    treeView.column("Sueldo", minwidth=0, width=80, stretch=NO)

    global DID
    global Dnom
    global Dap
    global Ded
    global Dcor
    global Darea
    global Dsuel

    Dsuel=IntVar()

    inicio()

# Datos a ingresar desde la ventana

    ID = Label(root, text="ID: ")
    ID.grid(columnspan=1, sticky=W)
    DID = Entry(root)
    DID.grid(row=1, column=1, sticky=W)

    nom= Label(root,text="Nombre: ")
    nom.grid(columnspan=1,sticky=W)
    Dnom=Entry(root)
    Dnom.grid(row=2,column=1,sticky=W)


    Ape= Label(root,text="Apellido:")
    Ape.grid(columnspan=2,sticky=W)
    Dap=Entry(root)
    Dap.grid(row=3, column=1, sticky=W)


    Ed= Label(root,text="Edad:")
    Ed.grid(columnspan=2,sticky=W)
    Ded=Entry(root)
    Ded.grid(row=4, column=1, sticky=W)

    cor= Label(root,text="Correo:")
    cor.grid(columnspan=5,sticky=W)
    Dcor=Entry(root)
    Dcor.grid(row=5, column=1, sticky=W)

    area= Label(root,text="AreaT:")
    area.grid(columnspan=5,sticky=W)
    Darea=Entry(root)
    Darea.grid(row=6,column=1,sticky=W)

    suel = Label(root, text="Sueldo:")
    suel.grid(columnspan=5, sticky=W)
    Dsuel = Entry(root)
    Dsuel.grid(row=7, column=1, sticky=W)

# Botones de la ventsna

    Agregar = Button(root, text='Nuevo Usuario', fg='Black',command=add)
    Agregar.grid(columnspan=6, sticky=N)

    Eliminar = Button(root, text='Eliminar Usuario', fg='Black', command=elim)
    Eliminar.grid(columnspan=6, sticky=N)

    Modificar = Button(root, text='Editar Usuario', fg='Black', command=mod)
    Modificar.grid(columnspan=6, sticky=N)

    root.mainloop()
VenAgre()


  • Creación de la base de datos y los procedimientos:

No hay comentarios:

Publicar un comentario