Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import os
- from tkinter import ttk
- from tkinter import *
- #import psycopg2 as pg
- #from psycopg2.extras import DictCursor
- #conn = pg.connect("host=localhost dbname=video_tk3 user=postgres password=1234")
- #conn.set_client_encoding('UTF8')
- #print("Base de datos Abierta satisfactoriamente")
- #cur = conn.cursor()
- import sqlite3
- class Empleado():
- db_name = 'videotk2.db'
- def __init__(self, window):
- self.wind = window
- self.wind.title('NOMINA EMPLEADOS')
- # Creating a Frame Container
- frame = LabelFrame(self.wind, text='Registre el nuevo Empleado')
- frame.grid(row=0, column=0, columnspan=3, pady=20)
- # Name Input
- Label(frame, text='Nombre: ').grid(row=1, column= 0, columnspan=1)
- self.name = Entry(frame)
- self.name.focus()
- self.name.grid(row=1, column=1)
- # Price Input
- Label(frame, text='Salario: ').grid(row=2, column=0)
- self.price = Entry(frame)
- self.price.grid(row=2, column=1)
- # Button Add Product
- ttk.Button(frame, text='Guardar Empleado', command = self.add_empleado).grid(row=3, columnspan=2, sticky=W + E)
- # Output Messages
- self.message = Label(text='', fg='red')
- self.message.grid(row=3, column=0, columnspan=2, sticky=W + E)
- # Table
- self.tree = ttk.Treeview( height=10, columns=3)
- self.tree.grid(row=4, column=0, columnspan=2)
- self.tree.heading('#0', text='Nombre', anchor=CENTER)
- self.tree.heading('#1', text='Salario', anchor=CENTER)
- # Buttons
- ttk.Button(text='DELETE', command=self.delete_empleado).grid(row=5, column=0, sticky=W + E)
- ttk.Button(text = 'EDIT', command = self.edit_empleado).grid(row = 5, column = 1, sticky = W + E)
- self.get_empleados()
- # Function to Execute Database Querys
- def run_query(self, query, parameters=()):
- with sqlite3.connect(self.db_name) as conn:
- cursor = conn.cursor()
- result = cursor.execute(query, parameters)
- conn.commit()
- return result
- # Get Products from Database
- # Get Products from Database
- def get_empleados(self):
- # cleaning Table
- records = self.tree.get_children()
- for element in records:
- self.tree.delete(element)
- query = 'SELECT * FROM empleado ORDER BY id'
- db_rows = self.run_query(query)
- # filling data
- for row in db_rows:
- self.tree.insert('', 0, text=row[1], values=row[2])
- # User Input Validation
- def validation(self):
- return len(self.name.get()) != 0 and len(self.price.get()) != 0
- def add_empleado(self):
- if self.validation():
- query ='INSERT INTO empleado VALUES (NULL, ?,?)'
- parameters = (self.name.get(), self.price.get())
- self.run_query(query, parameters)
- self.message['text'] = 'Empleado {} Adiccionado Satisfactoriamente'.format(self.name.get())
- self.name.delete(0, END)
- self.price.delete(0, END)
- else:
- self.message['text'] = 'Nombre and Salario son Requridos'
- self.get_empleados()
- def delete_empleado(self):
- self.message['text'] = ''
- try:
- self.tree.item(self.tree.selection())['text'][0]
- except IndexError as e:
- self.message['text'] = 'Please select a Record'
- return
- self.message['text'] = ''
- name = self.tree.item(self.tree.selection())['text']
- query = 'DELETE FROM empleado WHERE nombre = ?'
- self.run_query(query, (name, ))
- self.message['text'] = 'Record {} deleted Successfully'.format(name)
- self.get_empleados()
- def edit_empleado(self):
- self.message['text'] = ''
- try:
- self.tree.item(self.tree.selection())['values'][0]
- except IndexError as e:
- self.message['text'] = 'Por Favor Selecione el Empleado'
- return
- name = self.tree.item(self.tree.selection())['text']
- old_price = self.tree.item(self.tree.selection())['values'][0]
- self.edit_wind = Toplevel()
- self.edit_wind.title = 'Editar Empleados'
- # Old Name
- Label(self.edit_wind, text = 'Nombre Actual:').grid(row = 0, column = 1)
- Entry(self.edit_wind, textvariable = StringVar(self.edit_wind, value = name), state = 'readonly').grid(row = 0, column = 2)
- # New Name
- Label(self.edit_wind, text = 'Nuevo Salario:').grid(row = 1, column = 1)
- new_name = Entry(self.edit_wind)
- new_name.grid(row = 1, column = 2)
- # Old Price
- Label(self.edit_wind, text = 'Salario Actual:').grid(row = 2, column = 1)
- Entry(self.edit_wind, textvariable = StringVar(self.edit_wind, value = old_price), state = 'readonly').grid(row = 2, column = 2)
- # New Price
- Label(self.edit_wind, text = 'Nuevo Nombre:').grid(row = 3, column = 1)
- new_price= Entry(self.edit_wind)
- new_price.grid(row = 3, column = 2)
- Button(self.edit_wind, text = 'Actualizar', command = lambda: self.edit_records(new_name.get(), name, new_price.get(), old_price)).grid(row = 4, column = 2, sticky = W)
- self.edit_wind.mainloop()
- def edit_records(self, new_name, name, new_price, old_price):
- query = 'UPDATE empleado SET nombre = ?, salario = ? WHERE nombre = ? AND salario = ?'
- parameters = (new_name, new_price,name, old_price)
- self.run_query(query, parameters)
- self.edit_wind.destroy()
- self.message['text'] = 'Empleado {} Actualizado Satisfactoriamente'.format(name)
- self.get_empleados()
- if __name__ == '__main__':
- window = Tk()
- application = Empleado(window)
- window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement