eduardo barrera

Generation

generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida"

Aquí te muestro un ejemplo de código en Python que utiliza la biblioteca Tkinter para crear la interfaz gráfica y la biblioteca sqlite3 para interactuar con la base de datos. ```python import tkinter as tk from tkinter import messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: cursor.execute('DROP TABLE TablaClientes') conn.commit() messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) rut_entry = tk.Entry(ventana_registro) rut_entry.grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) nombre_entry = tk.Entry(ventana_registro) nombre_entry.grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) direccion_entry = tk.Entry(ventana_registro) direccion_entry.grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) telefono_entry = tk.Entry(ventana_registro) telefono_entry.grid(row=3, column=1) def guardar_cliente(): rut = rut_entry.get() nombre = nombre_entry.get() direccion = direccion_entry.get() telefono = telefono_entry.get() if nombre.isalpha() and direccion.isalpha(): try: cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut, nombre, direccion, telefono)) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') ventana_registro.destroy() except Exception as e: messagebox.showerror('Error', str(e)) else: messagebox.showerror('Error', 'Nombre y dirección solo pueden contener letras') tk.Button(ventana_registro, text='Guardar', command=guardar_cliente).grid(row=4, column=0, columnspan=2) # Función para mostrar clientes def mostrar_clientes(): ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_mostrar, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Label(ventana_mostrar, text=str(cliente[0])).grid(row=i+1, column=0) tk.Label(ventana_mostrar, text=cliente[1]).grid(row=i+1, column=1) tk.Label(ventana_mostrar, text=cliente[2]).grid(row=i+1, column=2) tk.Label(ventana_mostrar, text=cliente[3]).grid(row=i+1, column=3) tk.Label(ventana_mostrar, text=cliente[4]).grid(row=i+1, column=4) # Función para actualizar cliente def actualizar_cliente(): ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_actualizar, text='Id').grid(row=0, column=0) tk.Label(ventana_actualizar, text='Rut').grid(row=0, column=1) tk.Label(ventana_actualizar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_actualizar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_actualizar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Button(ventana_actualizar, text=str(cliente[0]), command=lambda id=cliente[0]: mostrar_cliente(id)).grid(row=i+1, column=0, columnspan=5) def mostrar_cliente(id): cursor.execute('SELECT * FROM TablaClientes WHERE Id = ?', (id,)) cliente = cursor.fetchone() ventana_mostrar_cliente = tk.Toplevel(ventana_actualizar) ventana_mostrar_cliente.title('Mostrar Cliente') tk.Label(ventana_mostrar_cliente, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar_cliente, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar_cliente, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar_cliente, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar_cliente, text='Telefono').grid(row=0, column=4) tk.Label(ventana_mostrar_cliente, text=str(cliente[0])).grid(row=1, column=0) tk.Label(ventana_mostrar_cliente, text=cliente[1]).grid(row=1, column=1) tk.Label(ventana_mostrar_cliente, text=cliente[2]).grid(row=1, column=2) tk.Label(ventana_mostrar_cliente, text=cliente[3]).grid(row=1, column=3) tk.Label(ventana_mostrar_cliente, text=cliente[4]).grid(row=1, column=4) def actualizar_cliente(): rut = cliente[1] nombre = cliente[2] direccion = cliente[3] telefono = cliente[4] ventana_actualizar_cliente = tk.Toplevel(ventana_mostrar_cliente) ventana_actualizar_cliente.title('Actualizar Cliente') tk.Label(ventana_actualizar_cliente, text='Rut:').grid(row=0, column=0) tk.Label(ventana_actualizar_cliente, text=rut).grid(row=0, column=1) tk.Label(ventana_actualizar_cliente, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_actualizar_cliente, text=nombre).grid(row=1, column=1) tk.Label(ventana_actualizar_cliente, text='Direccion:').grid(row=2, column=0) tk.Label(ventana_actualizar_cliente, text=direccion).grid(row=2, column=1) tk.Label(ventana_actualizar_cliente, text='Telefono:').grid(row=3, column=0) tk.Label(ventana_actualizar_cliente, text=telefono).grid(row=3, column=1) def guardar_actualizado(): rut = rut_entry.get() nombre = nombre_entry.get() direccion = direccion_entry.get() telefono = telefono_entry.get() if nombre.isalpha() and direccion.isalpha(): try: cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut, nombre, direccion, telefono, id)) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') ventana_actualizar_cliente.destroy() except Exception as e: messagebox.showerror('Error', str(e)) else: messagebox.showerror('Error', 'Nombre y dirección solo pueden contener letras') tk.Label(ventana_actualizar_cliente, text='Rut:').grid(row=4, column=0) rut_entry = tk.Entry(ventana_actualizar_cliente) rut_entry.insert(0, rut) rut_entry.grid(row=4, column=1) tk.Label(ventana_actualizar_cliente, text='Nombre:').grid(row=5, column=0) nombre_entry = tk.Entry(ventana_actualizar_cliente) nombre_entry.insert(0, nombre) nombre_entry.grid(row=5, column=1) tk.Label(ventana_actualizar_cliente, text='Direccion:').grid(row=6, column=0) direccion_entry = tk.Entry(ventana_actualizar_cliente) direccion_entry.insert(0, direccion) direccion_entry.grid(row=6, column=1) tk.Label(ventana_actualizar_cliente, text='Telefono:').grid(row=7, column=0) telefono_entry = tk.Entry(ventana_actualizar_cliente) telefono_entry.insert(0, telefono) telefono_entry.grid(row=7, column=1) tk.Button(ventana_actualizar_cliente, text='Guardar', command=guardar_actualizado).grid(row=8, column=0, columnspan=2) tk.Button(ventana_mostrar_cliente, text='Actualizar', command=actualizar_cliente).grid(row=2, column=0, columnspan=5) # Función para eliminar cliente def eliminar_cliente(): ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_eliminar, text='Id').grid(row=0, column=0) tk.Label(ventana_eliminar, text='Rut').grid(row=0, column=1) tk.Label(ventana_eliminar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_eliminar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_eliminar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Button(ventana_eliminar, text=str(cliente[0]), command=lambda id=cliente[0]: eliminar_cliente_id(id)).grid(row=i+1, column=0, columnspan=5) def eliminar_cliente_id(id): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (id,)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') ventana_eliminar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar acerca de def mostrar_acerca_de(): ventana_acerca_de = tk.Toplevel(root) ventana_acerca_de.title('Acerca de...') tk.Label(ventana_acerca_de, text='Versión del sistema: 1.0').pack() # Función para salir def salir(): root.destroy() # Crear ventana principal root = tk.Tk() root.title('Sistema de Clientes') # Crear botones tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Registro de Clientes', command=registrar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Mostrar Clientes', command=mostrar_clientes).pack(side=tk.RIGHT) tk.Button(root, text='Actualizar Cliente', command=actualizar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Cliente', command=eliminar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Acerca de...', command=mostrar_acerca_de).pack(side=tk.RIGHT) tk.Button(root, text='Salir', command=salir).pack(side=tk.RIGHT) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con varios botones que permiten realizar diferentes acciones. Algunas de estas acciones incluyen crear y eliminar la base de datos, registrar clientes, mostrar clientes, actualizar clientes, eliminar clientes y mostrar información sobre el sistema.

Questions about programming?Chat with your personal AI assistant