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" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu modificar codigo donde menu "Registro de Clientes" abra una pantalla con el tamaño segun las proporciones a los datos que ingresara el usuario y en ella se ralice el CRUD con sus botones respectivos ah

Aquí te muestro el código modificado en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica: ```python import tkinter as tk from tkinter import ttk, 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: conn.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') 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: conn.execute('DROP TABLE TablaClientes') 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') # Obtener tamaño de la ventana según los datos ingresados def obtener_tamaño(): return max(400, len(nombre.get()) * 10 + 100, len(direccion.get()) * 10 + 100) # Crear etiquetas y campos de texto tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) rut = tk.Entry(ventana_registro) rut.grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) nombre = tk.Entry(ventana_registro) nombre.grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) direccion = tk.Entry(ventana_registro) direccion.grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) telefono = tk.Entry(ventana_registro) telefono.grid(row=3, column=1) # Crear botones tk.Button(ventana_registro, text='Guardar', command=lambda: guardar_cliente(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_registro, text='Cancelar', command=ventana_registro.destroy).grid(row=4, column=1) # Obtener tamaño de la ventana ventana_registro.geometry(f'400x{obtener_tamaño()}') # Función para guardar cliente def guardar_cliente(rut, nombre, direccion, telefono): try: if not nombre.get().isalpha() or not direccion.get().isalpha(): messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') return cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar cliente def eliminar_cliente(): try: ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') # Crear etiquetas y campos de texto tk.Label(ventana_eliminar, text='Id del cliente:').grid(row=0, column=0) id_cliente = tk.Entry(ventana_eliminar) id_cliente.grid(row=0, column=1) # Crear botones tk.Button(ventana_eliminar, text='Eliminar', command=lambda: eliminar_cliente_db(id_cliente)).grid(row=1, column=0) tk.Button(ventana_eliminar, text='Cancelar', command=ventana_eliminar.destroy).grid(row=1, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar cliente de la base de datos def eliminar_cliente_db(id_cliente): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (id_cliente.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar cliente def actualizar_cliente(): try: ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') # Crear etiquetas y campos de texto tk.Label(ventana_actualizar, text='Id del cliente:').grid(row=0, column=0) id_cliente = tk.Entry(ventana_actualizar) id_cliente.grid(row=0, column=1) tk.Label(ventana_actualizar, text='Rut:').grid(row=1, column=0) rut = tk.Entry(ventana_actualizar) rut.grid(row=1, column=1) tk.Label(ventana_actualizar, text='Nombre:').grid(row=2, column=0) nombre = tk.Entry(ventana_actualizar) nombre.grid(row=2, column=1) tk.Label(ventana_actualizar, text='Direccion:').grid(row=3, column=0) direccion = tk.Entry(ventana_actualizar) direccion.grid(row=3, column=1) tk.Label(ventana_actualizar, text='Telefono:').grid(row=4, column=0) telefono = tk.Entry(ventana_actualizar) telefono.grid(row=4, column=1) # Crear botones tk.Button(ventana_actualizar, text='Actualizar', command=lambda: actualizar_cliente_db(id_cliente, rut, nombre, direccion, telefono)).grid(row=5, column=0) tk.Button(ventana_actualizar, text='Cancelar', command=ventana_actualizar.destroy).grid(row=5, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar cliente en la base de datos def actualizar_cliente_db(id_cliente, rut, nombre, direccion, telefono): try: if not nombre.get().isalpha() or not direccion.get().isalpha(): messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') return cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), id_cliente.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar clientes def mostrar_clientes(): try: ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') # Crear etiquetas y campos de texto tk.Label(ventana_mostrar, text='Id del cliente:').grid(row=0, column=0) id_cliente = tk.Entry(ventana_mostrar) id_cliente.grid(row=0, column=1) # Crear botones tk.Button(ventana_mostrar, text='Mostrar', command=lambda: mostrar_cliente_db(id_cliente)).grid(row=1, column=0) tk.Button(ventana_mostrar, text='Cancelar', command=ventana_mostrar.destroy).grid(row=1, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar cliente en la base de datos def mostrar_cliente_db(id_cliente): try: cursor.execute('SELECT * FROM TablaClientes WHERE Id = ?', (id_cliente.get(),)) cliente = cursor.fetchone() if cliente: messagebox.showinfo('Cliente', f'Id: {cliente[0]}, Rut: {cliente[1]}, Nombre: {cliente[2]}, Direccion: {cliente[3]}, Telefono: {cliente[4]}') else: messagebox.showerror('Error', 'Cliente no encontrado') except Exception as e: messagebox.showerror('Error', str(e)) # Crear menú principal menubar = tk.Menu(root) root.config(menu=menubar) # Crear menú "Archivo" archivo_menu = tk.Menu(menubar, tearoff=0) archivo_menu.add_command(label='Crear Base Datos Clientes', command=crear_base_datos) archivo_menu.add_command(label='Eliminar Base Datos Clientes', command=eliminar_base_datos) menubar.add_cascade(label='Archivo', menu=archivo_menu) # Crear menú "Cliente" cliente_menu = tk.Menu(menubar, tearoff=0) cliente_menu.add_command(label='Registro de Clientes', command=registrar_cliente) cliente_menu.add_command(label='Eliminar Cliente', command=eliminar_cliente) cliente_menu.add_command(label='Actualizar Cliente', command=actualizar_cliente) cliente_menu.add_command(label='Mostrar Cliente', command=mostrar_clientes) menubar.add_cascade(label='Cliente', menu=cliente_menu) # Crear menú "Ayuda" ayuda_menu = tk.Menu(menubar, tearoff=0) ayuda_menu.add_command(label='Acerca de...', command=lambda: messagebox.showinfo('Acerca de...', 'Versión 1.0')) menubar.add_cascade(label='Ayuda', menu=ayuda_menu) # Crear botones en la pantalla principal 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='Salir', command=root.destroy).pack(side=tk.RIGHT) # Mostrar la pantalla principal root.mainloop() ``` Este código crea una pantalla principal con un menú desplegable en la parte superior que contiene las opciones "Archivo", "Cliente" y "Ayuda". El menú "Archivo" contiene las opciones "Crear Base Datos Clientes" y "Eliminar Base Datos Clientes". El menú "Cliente" contiene las opciones "Registro de Clientes", "Eliminar Cliente", "Actualizar Cliente" y "Mostrar Cliente". El menú "Ayuda" contiene la opción "Acerca de...". Cuando se selecciona una opción del menú, se abre una nueva ventana con los campos y botones necesarios para realizar la acción correspondiente. Por ejemplo, cuando se selecciona la opción "Registro de Clientes", se abre una ventana con campos para ingresar el rut, nombre, dirección y teléfono del cliente, y un botón para guardar el cliente en la base de datos. Es importante mencionar que este código utiliza la biblioteca sqlite3 para interactuar con la base de datos, y que la base de datos se crea automáticamente si no existe.

Questions about programming?Chat with your personal AI assistant