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()
