Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tkinter import ttk
- from tkinter import messagebox
- import sqlite3
- # --------FUNCIONES---------------------------------------------
- db_personal = "Personal"
- def conexionBBDD():
- miConexion = sqlite3.connect("Personal")
- try:
- miCursor = miConexion.cursor()
- miCursor.execute('''
- CREATE TABLE DATOSPERSONAL (NOMBRE_PERSONAL VARCHAR (59),
- APELLIDO VARCHAR(50),
- DNI INTEGER (8) PRIMARY KEY)''')
- messagebox.showinfo("BBDD", "Base de datos creada con éxito")
- except:
- messagebox.showwarning("¡Aviso!", "La base de datos ya ha sido creada")
- def salir():
- valor = messagebox.askquestion("Salir", "¿Desea salir de la aplicación?")
- if valor == "yes":
- root.destroy()
- def agregar():
- ventanaAgregar = Toplevel(root)
- ventanaAgregar.title("Agregar personal")
- ventanaAgregar.geometry("270x200+460+180")
- ventanaAgregar.resizable(0, 0)
- ventanaAgregar.transient(root)
- miFrameAgregar = Frame(ventanaAgregar)
- miFrameAgregar.pack()
- espacioLabel = Label(miFrameAgregar, text="")
- espacioLabel.grid(row=0, column=0, columnspan=2)
- nombreAddLabel = Label(miFrameAgregar, text="Nombre:")
- nombreAddLabel.grid(row=1, column=0, sticky="se", padx=5, pady=10)
- apellidoAddLabel = Label(miFrameAgregar, text="Apellido:")
- apellidoAddLabel.grid(row=2, column=0, sticky="se", padx=5, pady=10)
- dniAddLabel = Label(miFrameAgregar, text="DNI:")
- dniAddLabel.grid(row=3, column=0, sticky="se", padx=5, pady=10)
- miNombre = StringVar()
- miApellido = StringVar()
- miDni = StringVar()
- nombreAddEntry = Entry(miFrameAgregar, textvariable=miNombre)
- nombreAddEntry.grid(row=1, column=1, padx=5, pady=10, sticky="s")
- apellidoAddEntry = Entry(miFrameAgregar, textvariable=miApellido)
- apellidoAddEntry.grid(row=2, column=1, padx=5, pady=10, sticky="s")
- dniAddEntry = Entry(miFrameAgregar, textvariable=miDni)
- dniAddEntry.grid(row=3, column=1, padx=5, pady=10, sticky="s")
- def crear():
- miConexion = sqlite3.connect("Personal")
- miCursor = miConexion.cursor()
- datos = miNombre.get(), miApellido.get(), miDni.get()
- miCursor.execute("INSERT INTO DATOSPERSONAL VALUES(?,?,?)", (datos))
- miConexion.commit()
- # D.E.S changes. lol
- # Excecuting my new functions
- limpiar_tabla(tabla) # LINE 1
- cargar_datos(miConexion, tabla) # LINE 2
- messagebox.showinfo("BBDD", "Registrado con éxito")
- def cerrarAgregar():
- aceptarBoton = True
- if aceptarBoton == True:
- ventanaAgregar.destroy()
- aceptarBoton = Button(ventanaAgregar, text="Aceptar",
- command=lambda: [cerrarAgregar(), crear()])
- aceptarBoton.place(x=100, y=160)
- cancelarBoton = Button(ventanaAgregar, text="Cancelar", command=cerrarAgregar)
- cancelarBoton.place(x=175, y=160)
- # D.E.S changes, lol,
- # Functions added to clear and load data from db
- def limpiar_tabla(tabla):
- """
- Clear the treeview widget.
- Delete all the entries.
- """
- children = tabla.get_children()
- if children:
- tabla.delete(*children)
- def cargar_datos(conexion, tabla):
- """
- Populates the treeivew with data from db.
- param: conexion an sqlite3 connection object
- param: tabla a treeivew widget object where data will be inserted/displayed
- """
- try:
- cursor = conexion.cursor()
- datos = cursor.execute("""SELECT * FROM DATOSPERSONAL""")
- for entrada in datos.fetchall():
- tabla.insert('', END, values=entrada)
- except Exception as e:
- print(e)
- # ------RAIZ---------------------------------------------------------------------
- root = Tk()
- root.geometry("360x440+430+90")
- # -----MENU----------------------------------------------------------------------
- barraMenu = Menu(root)
- root.config(menu=barraMenu)
- bbddMenu = Menu(barraMenu, tearoff=0)
- bbddMenu.add_command(label="Conectar", command=conexionBBDD)
- bbddMenu.add_command(label="Salir", command=salir)
- ayudaMenu = Menu(barraMenu, tearoff=0)
- ayudaMenu.add_command(label="Acerca de...")
- barraMenu.add_cascade(label="Archivo", menu=bbddMenu)
- barraMenu.add_cascade(label="Ayuda", menu=ayudaMenu)
- miFrame = Frame(root)
- miFrame.pack()
- # ----BOTON FRAME 1---------------------------------------------
- botonActualizar = Button(miFrame, text="Actualizar")
- botonActualizar.grid(row=0, column=0, sticky="sw", padx=10, pady=20)
- botonAgregar = Button(miFrame, text="Agregar", command=agregar)
- botonAgregar.grid(row=0, column=1, sticky="sw", padx=10, pady=20)
- botonEditar = Button(miFrame, text="Editar")
- botonEditar.grid(row=0, column=2, sticky="sw", padx=10, pady=20)
- botonBorrar = Button(miFrame, text="Borrar")
- botonBorrar.grid(row=0, column=3, sticky="sw", padx=10, pady=20)
- # -----TABLA-----------------------------------------------------
- miFrame2 = Frame(root)
- miFrame2.pack()
- # D.E.S changes:
- # setting meaningful column names/fields
- column_fields = ('nombre', 'apellido', 'dni',)
- tabla = ttk.Treeview(miFrame2, height=15, columns=column_fields)
- tabla.config(show='headings') # showing headings only
- tabla.grid(row=1, column=0, columnspan=4, sticky="nsew", padx=10)
- # passing the new column names or identifiers to the .heading() method
- tabla.heading("nombre", text="Nombre", anchor="center")
- tabla.heading("apellido", text="Apellido", anchor="center")
- tabla.heading("dni", text="DNI", anchor="center")
- tabla.column("nombre", stretch="no", width=110)
- tabla.column("apellido", stretch="no", width=110)
- tabla.column("dni", stretch="no", width=90)
- tabla.rowconfigure(0, weight=1)
- tabla.columnconfigure(0, weight=1)
- tabla.rowconfigure(1, weight=1)
- tabla.columnconfigure(1, weight=1)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment