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
y muchas gracias por todo ya casi lo estoy terminando
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