10-12-2018, 12:59 PM
Buen dia!!! Necesito de su ayuda, estoy trabajando con Tkinter, el boton agregar de la pestaña agregar alumno no vincula con la base de datos para que modifique o agregue alumno
Código:
#---coding: utf-8 -------
import sys
import time
import sqlite3 as db
import tkinter.messagebox as tkMessageBox
try:
from Tkinter import *
except ImportError:
from tkinter import *
try:
import ttk
py3 = False
except ImportError:
import tkinter.ttk as ttk
py3 = True
def comenzar_ventana():
global vent2, ventana1
ventana1 = Tk()
marcoventanainicial = Ventana (ventana1)
ventana1.mainloop()
vent2 = None
def Ventana(ventana1):
global vent2, w_win, vent1, pestagregar
vent1 = ventana1
vent2 = marcoventanainiciallevel (ventana1)
marcoventanainicial = Ventana (vent2)
return (vent2, marcoventanainicial)
def destroy_Ventana():
global vent2
vent2.destroy()
#vent2 = None
fecha=time.strftime("Hoy es : %d-%m-%Y\nes la hora : %H:%M")
#db_base = "Cooperadora.s3db"
class Ventana:
def __init__(self, marcoventanainicial):
_bgcolor = '#d9d9d9' # X11 color: 'gray85'
_fgcolor = '#000000' # X11 color: 'black'
_compcolor = '#d9d9d9' # X11 color: 'gray85'
_ana1color = '#d9d9d9' # X11 color: 'gray85'
_ana2color = '#d9d9d9' # X11 color: 'gray85'
font10 = "-family {Courier New} -size 10 -weight normal -slant" \
" roman -underline 0 -overstrike 0"
font11 = "-family {Wide Latin} -size 24 -weight normal -slant " \
"roman -underline 0 -overstrike 0"
estiloVentana = ttk.Style()
estiloVentana.theme_use('winnative')
estiloVentana.configure(".",background=_bgcolor,foreground=_fgcolor,font="TkDefaultFont")
estiloVentana.map('.',background=[('selected', _compcolor), ('active',_ana2color)])
marcoventanainicial.geometry("996x516+6+3")
marcoventanainicial.title("programacion 2018")
#************recuadro azul y titulo***************************************************
cuadrotitulo = Frame(marcoventanainicial)
cuadrotitulo.place(relx=0.01, rely=0.019, relheight=0.145, relwidth=0.985)
cuadrotitulo.configure(background="#3253d8")
titulo1 = Label(cuadrotitulo)
titulo1.place(relx=0.02, rely=0.0, height=51, width=964)
titulo1.configure(font=font11, background="#3253d8", text="COOPERADORA")
titulo2 = Label(cuadrotitulo)
titulo2.place(x=0, y=0)
titulo2.configure(font=font10, background="#3253d8", text=fecha)
#*******************recuadro de botones**********************************************
botones = Frame(marcoventanainicial)
botones.place(relx=0.01, rely=0.174, relheight=0.7, relwidth=0.126)
botones.configure(relief=GROOVE, borderwidth="6", background="#d9d9d9", highlightcolor ="black", width=125)
#******************botones izquierda**************************************************
agregar = Button(botones)
agregar.place(relx=0.16, rely=0.022, height=24, width=87)
agregar.configure(background="#d9d9d9", text="Alumnos", command = self.pestagregar )
cuotas = Button(botones)
cuotas.place(relx=0.16, rely=0.09, height=24, width=87)
cuotas.configure(background="#d9d9d9", text="Cuotas", command=self.pestacuota)
configurar = Button(botones)
configurar.place(relx=0.16, rely=0.157, height=24, width=87)
configurar.configure(background="#d9d9d9", text="Configuracion")
contabilidad = Button(botones)
contabilidad.place(relx=0.16, rely=0.225, height=24, width=87)
contabilidad.configure(background="#d9d9d9", text="Contabilidad")
salir = Button(botones)
salir.place(relx=0.16, rely=0.292, height=24, width=87)
salir.configure(text="Salir", background="#d9d9d9", command = marcoventanainicial.destroy)
#salir.configure(text="Salir", background="#d9d9d9", command = self.Exit)
#****************************************************************************************
#*****************pestañas*****************************************************
estiloVentana.configure('TNotebook.Tab', background=_bgcolor, foreground=_fgcolor)
estiloVentana.map('TNotebook.Tab', background=[('selected', _compcolor), ('active',_ana2color)])
self.pestagregar()
self.tablax()
self.leerdb()
#**********************************************************************************
# (pestaña agregar)
def pestagregar(marcoventanainicial):
pestaña = ttk.Notebook()
pestaña.place(relx=0.151, rely=0.174, relheight=0.186, relwidth=0.84)
pestaña.configure(width=854, takefocus="")
pestaña_t0 = Frame(pestaña)
pestaña.add(pestaña_t0, padding=3)
pestaña.tab(0, text="\t\tAgregar Alumno\t\t\t",compound="right",underline="-1",)
pestaña_t0.configure(background="#d9d9d9")
#boton de AGREGAR de la pestaña Agregar
botpestagregar = ttk.Button(pestaña_t0)
botpestagregar.place(relx=0.882, rely=0.286, height=35, width=76)
#botpestagregar.configure(text="Agregar", command = self.agregadb)
botpestagregar.configure(text="Agregar")
#cuadro de entrada de apellido
etiqapellido = Label(pestaña_t0, text="APELLIDO")
etiqapellido.place(relx=0.047, rely=0.01, height=20, width=204)
etiqapellido.configure(background="#d9d9d9")
cuadrentrapellido = Entry(pestaña_t0)
cuadrentrapellido.focus()
cuadrentrapellido.place(relx=0.035, rely=0.429,height=20, relwidth=0.264)
cuadrentrapellido.configure(background="YellowGreen",font="font10")
#self.cuadrentrapellido.configure(takefocus="0")
#cuadro de entrada de nombre
etiqnombre = Label(pestaña_t0, text="NOMBRE")
etiqnombre.place(relx=0.340, rely=0.1, height=20, width=204)
etiqnombre.configure(background="#d9d9d9")
cuadrentrnombre = Entry(pestaña_t0)
cuadrentrnombre.place(relx=0.300, rely=0.429,height=20, relwidth=0.364)
cuadrentrnombre.configure(background="YellowGreen",font="font10")
#self.cuadrentrnombre.configure(takefocus="0")
#cuadro de entrada de dni
etiqdni = Label(pestaña_t0,text="DNI")
etiqdni.place(relx=0.650, rely=0.0, height=20, width=124)
etiqdni.configure(background="#d9d9d9")
cuadrentrdni = Entry(pestaña_t0)
cuadrentrdni.place(relx=0.665, rely=0.429,height=20, relwidth=0.150)
cuadrentrdni.configure(background="YellowGreen",font="font10")
#self.cuadrentrdni.configure(takefocus="0")
#(pestaña editar)
pestaña_t1 = Frame(pestaña)
pestaña.add(pestaña_t1, padding=3)
pestaña.tab(1, text="\t\tEditar\t\t\t",compound="bottom",underline="-1",)
pestaña_t1.configure(background="#d9d9d9")
#boton de BUSCAR de la pestaña EDITAR
botpestagregar = ttk.Button(pestaña_t1, text="Buscar")
botpestagregar.place(relx=0.4, rely=0.286, height=35, width=76)
#boton de SELECCIONAR de la pestaña EDITAR
botpestagregar = ttk.Button(pestaña_t1,text="Seleccionar")
botpestagregar.place(relx=0.7, rely=0.286, height=35, width=76)
botpestagregar.configure(takefocus="")
#cuadro de entrada de dni
etiqdni = Label(pestaña_t1,text="DNI")
etiqdni.place(relx=0.050, rely=0.0, height=20, width=124)
etiqdni.configure(background="#d9d9d9")
cuadrentrdni = Entry(pestaña_t1)
cuadrentrdni.place(relx=0.065, rely=0.429,height=20, relwidth=0.150)
cuadrentrdni.focus()
cuadrentrdni.configure(background="YellowGreen",font="font10")
#self.cuadrentrdni.configure(takefocus="0")
#(pestaña ver)
pestaña_t2 = Frame(pestaña)
pestaña.add(pestaña_t2, padding=3)
pestaña.tab(2, text="\t\t\tVer\t\t\t",compound="bottom",underline="-1",)
pestaña_t2.configure(background="#d9d9d9")
#*********************************************************************************************
def pestacuota(marcoventanainicial):
pestaña = ttk.Notebook()
pestaña.place(relx=0.151, rely=0.174, relheight=0.186, relwidth=0.84)
pestaña.configure(width=854, takefocus="")
#(pestaña hisorial de pago)
pestaña_t0 = Frame(pestaña)
pestaña.add(pestaña_t0, padding=3)
pestaña.tab(0, text="\t\t\tHistorial de pago\t\t\t",compound="bottom",underline="-1",)
pestaña_t0.configure(background="#d9d9d9")
#boton de BUSCAR de la pestaña EDITAR
botpestagregar = ttk.Button(pestaña_t0, text="Buscar")
botpestagregar.place(relx=0.4, rely=0.286, height=35, width=76)
#boton de SELECCIONAR de la pestaña EDITAR
botpestagregar = ttk.Button(pestaña_t0,text="Seleccionar")
botpestagregar.place(relx=0.7, rely=0.286, height=35, width=76)
botpestagregar.configure(takefocus="")
#cuadro de entrada de dni
etiqdni = Label(pestaña_t0,text="DNI")
etiqdni.place(relx=0.050, rely=0.0, height=20, width=124)
etiqdni.configure(background="#d9d9d9")
cuadrentrdni = Entry(pestaña_t0)
cuadrentrdni.place(relx=0.065, rely=0.429,height=20, relwidth=0.150)
cuadrentrdni.focus()
cuadrentrdni.configure(background="YellowGreen",font="font10")
#self.cuadrentrdni.configure(takefocus="0")
#(pestaña ver)
pestaña_t1 = Frame(pestaña)
pestaña.add(pestaña_t1, padding=3)
pestaña.tab(1, text="\t\t\tVer\t\t\t",compound="bottom",underline="-1",)
pestaña_t1.configure(background="#d9d9d9")
def tablax(self):
self.tabla = ttk.Treeview(columns=("Orden", "Apellido", "Nombre", "DNI"), selectmode="extended", height=500)
self.tabla.place(relx=0.151, rely=0.368, relheight=0.624, relwidth=0.835)
self.tabla.heading('Orden', text="Orden", anchor=W)
self.tabla.heading('Apellido', text="Apellido", anchor=W)
self.tabla.heading('Nombre', text="Nombre", anchor=W)
self.tabla.heading('DNI', text="DNI", anchor=W)
self.tabla.column('#0', stretch=NO, minwidth=0, width=0)
self.tabla.column('#1', stretch=NO, minwidth=0, width=80)
self.tabla.column('#2', stretch=NO, minwidth=0, width=300)
self.tabla.column('#3', stretch=NO, minwidth=0, width=330)
self.tabla.column('#4', stretch=NO, minwidth=0, width=120)
# ****************operar con la base de datos Cooperadora.s3db******
def conectardb(self,traer, datos =()):
self.db_base = "Cooperadora.s3db"
conexion= db.connect(self.db_base)
cursor = conexion.cursor()
result=cursor.execute(traer, datos)
conexion.commit()
return result
def leerdb(self):
# borrar tabla
memoria =self.tabla.get_children()
for elementos in memoria:
self.tabla.delete(elementos)
#consulta de datos
traer = "SELECT *FROM Alumnos ORDER BY Orden ASC"
filas = self.conectardb(traer)
#rellenando los datos
for fila in filas:
#print(fila) muestra datos en consola
self.tabla.insert('', 'end', values=(fila[0], fila[1], fila[2],fila[3]))
# agregar datos desde cuadro de entrada
# ~ def agregadb(self):
# ~ if cuadrentrapellido.get() == "" or cuadrentrnombre.get() == "" or cuadrentrdni.get() == "":
# ~ txt_result.config(text="Complete todos los campos requeridos!!!!", fg="red")
# ~ else:
# ~ conectardb()
# ~ cursor.execute("INSERT INTO 'Alumnos' (Apellido, Nombre, DNI) VALUES(?, ?, ?)", (str(cuadrentrapellido.get()), str(cuadrentrnombre.get()), str(cuadrentrdni.get()))
# ~ #conexion.commit()
def validation(self):
return len(self.cuadrentrapellido.get()) !=0 or len(self.cuadrentrnombre.get())!=0 or len(self.cuadrentrdni.get())!=0
def agregadb(self):
if self.validation():
traer = "INSERT INTO Alumnos VALUES(NULL, ?, ?, ?)"
datos = (self.cuadrentrapellido.get(), self.cuadrentrnombre.get(), self.cuadrentrdni.get())
self.conectardb(traer, datos)
self.mensaje["text"] = "Se ha incorporado a {} exitosamente".format(self.cuadrentrapellido.get())
else:
self.mensaje["text"] = "...no se ha ingresado datos. Vuelva a cargar datos por favor"
self.leerdb()
def Exit(self):
result = tkMessageBox.askquestion('Cooperadora', 'Me vas a aprobar?\n Daaaale aprobame ...por favooooooo', icon="warning")
if result == 'yes':
ventana1.destroy()
exit()
if __name__ == '__main__':
comenzar_ventana()