Foros Python

Versión completa: Consulta sobre Entry
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola quisiera saber si hay una forma en cuanto se de click en actualizar los entry tengan los datos anteriores ya cargados si hay en recursos python un tutorial puedo aprender un poco por logica podria ser set pero no se como utilizarlo y si sirve

Código:
import tkinter as tk

from tkinter import ttk,messagebox

import sqlite3

import datetime



#from win10toast import ToastNotifier



# toaster = ToastNotifier()

# toaster.show_toast("App Gimnasio",

#                   "¡Hay que pagar la cuota!",

#                   duration=60)
 


db = sqlite3.connect("Gimnasio_MDD.db")

cursor = db.cursor()
try:
    cursor.execute("create table Clientes (Id integer  primary key autoincrement,nombre text, fecha_de_nacimiento text,telefono numeric,vencimiento_de_la_cuota numeric)")
except sqlite3.OperationalError :
    def agregar_clientes():

        Id = 0

        nombre = caja_nombre.get()

        fecha_de_nacimiento= caja_fecha.get()

        telefono = caja_telefono.get()

        Vencimiento_de_la_cuota = caja_vencimiento.get()
   

        if nombre == "" and fecha_de_nacimiento == "" and telefono == "" and Vencimiento_de_la_cuota == "" :
       

            messagebox.showerror(message = "Complete todos lo campos!")

            #db.close    

        else:
       

            clientes_tab.insert("", tk.END, text=nombre, values=(fecha_de_nacimiento, telefono ,Vencimiento_de_la_cuota))

            try:

                cursor.execute("insert into Clientes values(NULL,?,?,?,?) ",(nombre,fecha_de_nacimiento ,telefono,Vencimiento_de_la_cuota))
                db.commit()
           

                caja_nombre.delete(0,tk.END)

                caja_fecha.delete(0,tk.END)

                caja_telefono.delete(0,tk.END)

                caja_vencimiento.delete(0,tk.END)
       


            except ValueError:

                messagebox.showerror(message ="solo numeros!")
   
   
           

    def eliminar():
        cursor.execute("select * from Clientes")
        clientes = cursor.fetchall()
        selecion = clientes_tab.item(clientes_tab.selection())["text"]
        for cliente in clientes:
           

            cliente = cliente[1]
       

            if selecion == "":

                messagebox.showerror("Error","No se eligio ningun cliente")
                break

            elif selecion == cliente:

                cursor.execute("delete from Clientes where nombre = ?",(selecion,))
   
           


    def listar():
        for i in clientes_tab.get_children():
            clientes_tab.delete(i)

        cursor.execute("select * from Clientes")

        clientes = cursor.fetchall()


        for cliente  in clientes:

       
            clientes_tab.insert(
                "",

                tk.END,

                text=cliente[1],

                values = (cliente[2],cliente[3],cliente[4]))
        db.commit()
       

   
   

    def editar_clientes():

       
        #nueva_ventana
        global nueva_ventana
        nueva_ventana = tk.Toplevel(ventana)

       

        nueva_ventana.config(width=600,height=400)

        nueva_ventana.title("Editar")
        nombre = caja_nombre.get()
        #caja_nombre.setvar(nombre)

        fecha_de_nacimiento= caja_fecha.get()

        telefono = caja_telefono.get()

        Vencimiento_de_la_cuota = caja_vencimiento.get()

        Id = -1

        lbl_edit_nombre = ttk.Label(nueva_ventana,text="Ingrese nombre")

        lbl_edit_nombre.place(x=10,y=10)

        caja_edit_nombre = ttk.Entry(nueva_ventana)

        caja_edit_nombre.place(x=120,y=10)


        lbl_edit_cumple = ttk.Label(nueva_ventana,text="Ingrese Fecha")

        lbl_edit_cumple.place(x=10,y=40)

        caja_edit_cumple = ttk.Entry(nueva_ventana,validate="key",validatecommand=(ventana.register(validate_entry),"%P"))

        caja_edit_cumple.place(x=120,y=40)


        lbl_edit_telef = ttk.Label(nueva_ventana,text="Ingrese Telefono")

        lbl_edit_telef.place(x=10,y=70)

        caja_edit_telef = ttk.Entry(nueva_ventana)

        caja_edit_telef.place(x=120,y=70)


        lbl_edit_vencimiento = ttk.Label(nueva_ventana,text="Ingrese Vencimiento")

        lbl_edit_vencimiento.place(x=10,y=90)

        caja_edit_vencimiento = ttk.Entry(nueva_ventana,validate="key",validatecommand=(ventana.register(validador_de_fecha),"%P"))

        caja_edit_vencimiento.place(x=120,y=90)
       
   

        nombres =  clientes_tab.item(clientes_tab.selection())["text"]

        valores = clientes_tab.item(clientes_tab.selection())["values"]



        boton_actualizar = ttk.Button(nueva_ventana, text = 'Actualizar', command = lambda : editar(nombres,caja_edit_nombre.get(),caja_edit_cumple.get(),caja_edit_telef.get(),caja_edit_vencimiento.get(),nombres))

        boton_actualizar.place(x=10,y=110)
        nueva_ventana.mainloop()
       
       
       

    def editar(nombres,cajaNombre,cajaCumple,cajaTelef,cajaVenci,nombre):

        nombres =  clientes_tab.item(clientes_tab.selection())["text"]
   
        valores = clientes_tab.item(clientes_tab.selection())["values"]
        cursor.execute("select * from Clientes")
        e = cursor.fetchall()
        name = e[0]
        name[1]
        name = name[1]
        cursor.execute(

        "UPDATE Clientes SET nombre=?, fecha_de_de_nacimiento=?, telefono=?, vencimiento_de_la_cuota=? WHERE nombre=?",

        (cajaNombre, cajaCumple, cajaTelef, cajaVenci,nombres)
        )
        db.commit()
        messagebox.showinfo("Actualizado","Registro Actualizado")
        nueva_ventana.destroy()
        listar()
           

   
           


    def validate_entry(new_text):
   
        
        if len(new_text) > 10:
            return False
        checks = []
        for i, char in enumerate(new_text):
                        if i in (2, 5):
                checks.append(char == "/")
            else:
                
                checks.append(char.isdecimal())
        
        return all(checks)

    def validador_de_fecha(text):
        if len(text) > 3:
            return False
        checks = []
        for i,char in enumerate(text):
            checks.append(char.isdecimal())

        return all(checks)
    ventana = tk.Tk()

    ventana.title("Gimansio MD")

    ventana.geometry("1000x600+150+80")
    def cumple():
        ventana_cumpleaños = tk.Toplevel(ventana)
        ventana_cumpleaños.geometry("400x300")
        ventana_cumpleaños.title("Cumpleaños")
        lista = tk.Listbox(ventana_cumpleaños)
        lista.place(x=0,y=0,width=400,height=300)

       
       
        hoy = datetime.datetime.now()
        fecha_actual = hoy.strftime("%d/%m/%Y")
        dia_mes = fecha_actual[0:5]
       
       
       
        cursor.execute("select * from Clientes")
        listado = cursor.fetchall()
        for i in listado:
           
            nombree = i[1]
            fecha_nacimiento = i[2]
            fecha_nacimiento = fecha_nacimiento[0:5]
           
            if dia_mes == fecha_nacimiento:
               
                messagebox.showinfo("ventana","Hoy es el cumple de "+ nombree)
                lista.insert(tk.END,nombree)
        ventana_cumpleaños.mainloop()  
    def vencimiento():
        cursor.execute("select * from Clientes")
        ventana_vencimiento = tk.Toplevel(ventana)
        ventana_vencimiento.geometry("400x300")
        ventana_vencimiento.title("Vencimiento de la cuota")
        lista_ven = tk.Listbox(ventana_vencimiento)
        lista_ven.place(x=0,y=0,width=400,height=300)
       
        fecha_hoy = datetime.datetime.now()
        fecha_hoy = fecha_hoy.strftime('%d/%m/%Y')
        parte_de_fecha = fecha_hoy[:2]
        datos = cursor.fetchall()

        for i in datos:
            nombre = i[1]
            venci = i[4]
            venci = venci[:2]
           
       
           
            if parte_de_fecha  ==  venci:
               
           
                messagebox.showinfo("Pago de cuota","Debe la cuota " + nombre)
                lista_ven.insert(tk.END,nombre)


    boton_agregar = ttk.Button(text="Agregar Clientes", command=agregar_clientes)

    boton_agregar.place(x=780, y=80)


    boton_eliminar = ttk.Button(text="Elminar",command=eliminar)

    boton_eliminar.place(x=780,y=110)


    boton_listar = ttk.Button(text="Mostrar Clientes",command=listar)

    boton_listar.place(x=780,y=140)

    boton_actualizar = ttk.Button(text="Actualizar registro",command=editar_clientes)

    boton_actualizar.place(x=780,y=170)



    etiq_nombre= ttk.Label(text="Nombre")

    etiq_nombre.place(x=10,y=10)

    caja_nombre= ttk.Entry()

    caja_nombre.place(x=70,y=10)


    etiq_fecha_nacimiento = ttk.Label(text="Fecha de nacimiento")

    etiq_fecha_nacimiento.place(x=200,y=10)

    caja_fecha= ttk.Entry(validate="key",
        
        validatecommand=(ventana.register(validate_entry), "%P"))

    caja_fecha.place(x=320,y=10)



    etiq_telefono = ttk.Label(text="Telefono")

    etiq_telefono.place(x=420,y=10)

    caja_telefono= ttk.Entry()

    caja_telefono.place(x=470,y=10)


    etiq_vencimiento = ttk.Label(text="Vencimiento de la cuota")

    etiq_vencimiento.place(x=600,y=10)

    caja_vencimiento= ttk.Entry(validate="key",validatecommand=(ventana.register(validate_entry),"%P"))

    caja_vencimiento.place(x=740,y=10)






    clientes_tab = ttk.Treeview(columns=("fecha_de_nacimiento","telefono","vencimiento"))

    clientes_tab.place(x=10, y=60, width=700, height=500)



    clientes_tab.heading("#0", text="Nombre")

    clientes_tab.heading("fecha_de_nacimiento", text="Fecha de Nacimiento")

    clientes_tab.heading("telefono", text="Telefono")

    clientes_tab.heading("vencimiento",text="Fecha de vencimiento")

    clientes_tab.column("telefono", width=80)
   

    nombre = clientes_tab.item(clientes_tab.selection())["text"]


    valores = clientes_tab.item(clientes_tab.selection())["values"]




    vencimiento()
    cumple()              
               
       

    ventana.mainloop()

y muchas gracias por todo ya casi lo estoy terminando
Hola, Celso.

¿Cuáles serían los entry que deben tener datos anteriores? ¿De dónde vienen esos datos?

Saludos
ya lo resolvi francisco muchas gracias bsuque era insert

Código:
import tkinter as tk

from tkinter import ttk,messagebox

import sqlite3

import datetime



#from win10toast import ToastNotifier



# toaster = ToastNotifier()

# toaster.show_toast("App Gimnasio",

#                   "¡Hay que pagar la cuota!",

#                   duration=60)



db = sqlite3.connect("Gimnasio_MDD.db")

cursor = db.cursor()
try:
    cursor.execute("create table Clientes (Id integer  primary key autoincrement,nombre text, fecha_de_nacimiento text,telefono numeric,vencimiento_de_la_cuota numeric)")
except sqlite3.OperationalError :
    def agregar_clientes():

        Id = 0

        nombre = caja_nombre.get()

        fecha_de_nacimiento= caja_fecha.get()

        telefono = caja_telefono.get()

        Vencimiento_de_la_cuota = caja_vencimiento.get()
    

        if nombre == "" and fecha_de_nacimiento == "" and telefono == "" and Vencimiento_de_la_cuota == "" :
        

            messagebox.showerror(message = "Complete todos lo campos!")

            #db.close    

        else:
        

            clientes_tab.insert("", tk.END, text=nombre, values=(fecha_de_nacimiento, telefono ,Vencimiento_de_la_cuota))

            try:

                cursor.execute("insert into Clientes values(NULL,?,?,?,?) ",(nombre,fecha_de_nacimiento ,telefono,Vencimiento_de_la_cuota))
                db.commit()
            

                caja_nombre.delete(0,tk.END)

                caja_fecha.delete(0,tk.END)

                caja_telefono.delete(0,tk.END)

                caja_vencimiento.delete(0,tk.END)
        


            except ValueError:

                messagebox.showerror(message ="solo numeros!")
    
    
            

    def eliminar():
        cursor.execute("select * from Clientes")
        clientes = cursor.fetchall()
        selecion = clientes_tab.item(clientes_tab.selection())["text"]
        for cliente in clientes:
            

            cliente = cliente[1]
        

            if selecion == "":

                messagebox.showerror("Error","No se eligio ningun cliente")
                break

            elif selecion == cliente:

                cursor.execute("delete from Clientes where nombre = ?",(selecion,))
    
            


    def listar():
        for i in clientes_tab.get_children():
            clientes_tab.delete(i)

        cursor.execute("select * from Clientes")

        clientes = cursor.fetchall()


        for cliente  in clientes:

        
            clientes_tab.insert(
                "",

                tk.END,

                text=cliente[1],

                values = (cliente[2],cliente[3],cliente[4]))
        db.commit()
        

    
    

    def editar_clientes():

        nombre = clientes_tab.item(clientes_tab.selection())["text"]
        nombre1 = str(nombre)


        valores = clientes_tab.item(clientes_tab.selection())["values"]
        fecha1 = valores[0]
        telefono1 = valores[1]
        vencimien1 = valores[2]
        print(nombre,valores)
        #nueva_ventana
        global nueva_ventana
        nueva_ventana = tk.Toplevel(ventana)

        

        nueva_ventana.config(width=600,height=400)

        nueva_ventana.title("Editar")
        nombre = caja_nombre.get()
        

        fecha_de_nacimiento= caja_fecha.get()

        

        Vencimiento_de_la_cuota = caja_vencimiento.get()

        Id = -1

        lbl_edit_nombre = ttk.Label(nueva_ventana,text="Ingrese nombre")

        lbl_edit_nombre.place(x=10,y=10)

        caja_edit_nombre = ttk.Entry(nueva_ventana)

        caja_edit_nombre.place(x=120,y=10)
        caja_edit_nombre.insert(tk.END, nombre1)
        #caja_edit_nombre.insert(tk.END, nombre[0])

        lbl_edit_cumple = ttk.Label(nueva_ventana,text="Ingrese Fecha")

        lbl_edit_cumple.place(x=10,y=40)

        caja_edit_cumple = ttk.Entry(nueva_ventana,validate="key",validatecommand=(ventana.register(validate_entry),"%P"))

        caja_edit_cumple.place(x=120,y=40)
        caja_edit_cumple.insert(tk.END, fecha1)


        lbl_edit_telef = ttk.Label(nueva_ventana,text="Ingrese Telefono")

        lbl_edit_telef.place(x=10,y=70)

        caja_edit_telef = ttk.Entry(nueva_ventana)

        caja_edit_telef.place(x=120,y=70)
        caja_edit_telef.insert(tk.END, telefono1)


        lbl_edit_vencimiento = ttk.Label(nueva_ventana,text="Ingrese Vencimiento")

        lbl_edit_vencimiento.place(x=10,y=90)

        caja_edit_vencimiento = ttk.Entry(nueva_ventana,validate="key",validatecommand=(ventana.register(validador_de_fecha),"%P"))

        caja_edit_vencimiento.place(x=120,y=90)
        caja_edit_vencimiento.insert(tk.END, vencimien1)
        
    

        nombres =  clientes_tab.item(clientes_tab.selection())["text"]

        valores = clientes_tab.item(clientes_tab.selection())["values"]



        boton_actualizar = ttk.Button(nueva_ventana, text = 'Actualizar', command = lambda : editar(nombres,caja_edit_nombre.get(),caja_edit_cumple.get(),caja_edit_telef.get(),caja_edit_vencimiento.get(),nombres))

        boton_actualizar.place(x=10,y=110)
        nueva_ventana.mainloop()
        
        
        

    def editar(nombres,cajaNombre,cajaCumple,cajaTelef,cajaVenci,nombre):

        nombres =  clientes_tab.item(clientes_tab.selection())["text"]
        

    
        valores = clientes_tab.item(clientes_tab.selection())["values"]
      
        cursor.execute("select * from Clientes")
        e = cursor.fetchall()
        name = e[0]
        name[1]
        name = name[1]
        cursor.execute(

        "UPDATE Clientes SET nombre=?, fecha_de_de_nacimiento=?, telefono=?, vencimiento_de_la_cuota=? WHERE nombre=?",

        (cajaNombre, cajaCumple, cajaTelef, cajaVenci,nombres)
        )
        db.commit()
        messagebox.showinfo("Actualizado","Registro Actualizado")
        nueva_ventana.destroy()
        listar()
            

    
            


    def validate_entry(new_text):
    
        # Máximo de diez caracteres.
        if len(new_text) > 10:
            return False
        checks = []
        for i, char in enumerate(new_text):
            # En los índices 2 y 5 deben estar los caracteres "/".
            if i in (2, 5):
                checks.append(char == "/")
            else:
                # En el resto de los casos, la única restricción es que sean
                # números entre el 0 y el 9.
                checks.append(char.isdecimal())
        # `all()` retorna verdadero si todos los chequeos son verdaderos.
        return all(checks)

    def validador_de_fecha(text):
        if len(text) > 3:
            return False
        checks = []
        for i,char in enumerate(text):
            checks.append(char.isdecimal())

        return all(checks)
    ventana = tk.Tk()

    ventana.title("Gimansio MD")

    ventana.geometry("1000x600+150+80")
    def cumple():
        ventana_cumpleaños = tk.Toplevel(ventana)
        ventana_cumpleaños.geometry("400x300")
        ventana_cumpleaños.title("Cumpleaños")
        lista = tk.Listbox(ventana_cumpleaños)
        lista.place(x=0,y=0,width=400,height=300)

        
        
        hoy = datetime.datetime.now()
        fecha_actual = hoy.strftime("%d/%m/%Y")
        dia_mes = fecha_actual[0:5]
        
        
        
        cursor.execute("select * from Clientes")
        listado = cursor.fetchall()
        for i in listado:
            
            nombree = i[1]
            fecha_nacimiento = i[2]
            fecha_nacimiento = fecha_nacimiento[0:5]
            
            if dia_mes == fecha_nacimiento:
                
                messagebox.showinfo("ventana","Hoy es el cumple de "+ nombree)
                lista.insert(tk.END,nombree)
        ventana_cumpleaños.mainloop()  
    def vencimiento():
        cursor.execute("select * from Clientes")
        ventana_vencimiento = tk.Toplevel(ventana)
        ventana_vencimiento.geometry("400x300")
        ventana_vencimiento.title("Vencimiento de la cuota")
        lista_ven = tk.Listbox(ventana_vencimiento)
        lista_ven.place(x=0,y=0,width=400,height=300)
        
        fecha_hoy = datetime.datetime.now()
        fecha_hoy = fecha_hoy.strftime('%d/%m/%Y')
        parte_de_fecha = fecha_hoy[:2]
        datos = cursor.fetchall()

        for i in datos:
            nombre = i[1]
            venci = i[4]
            venci = venci[:2]
            
        
            
            if parte_de_fecha  ==  venci:
                
            
                messagebox.showinfo("Pago de cuota","Debe la cuota " + nombre)
                lista_ven.insert(tk.END,nombre)


    boton_agregar = ttk.Button(text="Agregar Clientes", command=agregar_clientes)

    boton_agregar.place(x=780, y=80)


    boton_eliminar = ttk.Button(text="Elminar",command=eliminar)

    boton_eliminar.place(x=780,y=110)


    boton_listar = ttk.Button(text="Mostrar Clientes",command=listar)

    boton_listar.place(x=780,y=140)

    boton_actualizar = ttk.Button(text="Actualizar registro",command=editar_clientes)

    boton_actualizar.place(x=780,y=170)



    etiq_nombre= ttk.Label(text="Nombre")

    etiq_nombre.place(x=10,y=10)

    caja_nombre= ttk.Entry()

    caja_nombre.place(x=70,y=10)


    etiq_fecha_nacimiento = ttk.Label(text="Fecha de nacimiento")

    etiq_fecha_nacimiento.place(x=200,y=10)

    caja_fecha= ttk.Entry(validate="key",
        # Solo necesitamos "%P".
        validatecommand=(ventana.register(validate_entry), "%P"))

    caja_fecha.place(x=320,y=10)



    etiq_telefono = ttk.Label(text="Telefono")

    etiq_telefono.place(x=420,y=10)

    caja_telefono= ttk.Entry()

    caja_telefono.place(x=470,y=10)


    etiq_vencimiento = ttk.Label(text="Vencimiento de la cuota")

    etiq_vencimiento.place(x=600,y=10)

    caja_vencimiento= ttk.Entry(validate="key",validatecommand=(ventana.register(validate_entry),"%P"))

    caja_vencimiento.place(x=740,y=10)






    clientes_tab = ttk.Treeview(columns=("fecha_de_nacimiento","telefono","vencimiento"))

    clientes_tab.place(x=10, y=60, width=700, height=500)



    clientes_tab.heading("#0", text="Nombre")

    clientes_tab.heading("fecha_de_nacimiento", text="Fecha de Nacimiento")

    clientes_tab.heading("telefono", text="Telefono")

    clientes_tab.heading("vencimiento",text="Fecha de vencimiento")

    clientes_tab.column("telefono", width=80)
    

    nombre = clientes_tab.item(clientes_tab.selection())["text"]
    


    valores = clientes_tab.item(clientes_tab.selection())["values"]

    print(nombre)
    print(valores)


    vencimiento()
    cumple()              
                
        

    ventana.mainloop()