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
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 la 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 la 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 un cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') ventana_registro.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() nombre = tk.StringVar() direccion = tk.StringVar() telefono = tk.StringVar() # Etiquetas y campos de texto para ingresar los datos del cliente tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_registro, textvariable=rut).grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) tk.Entry(ventana_registro, textvariable=nombre).grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) tk.Entry(ventana_registro, textvariable=direccion).grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) tk.Entry(ventana_registro, textvariable=telefono).grid(row=3, column=1) # Botones para registrar y cancelar tk.Button(ventana_registro, text='Registrar', command=lambda: registrar_cliente_db(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_registro, text='Cancelar', command=ventana_registro.destroy).grid(row=4, column=1) # Función para registrar un cliente en la base de datos def registrar_cliente_db(rut, nombre, direccion, telefono): try: if nombre.get().isalpha() and direccion.get().isalpha(): 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') else: messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar los clientes en la base de datos def mostrar_clientes(): try: cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() texto = '' for cliente in clientes: texto += f'Id: {cliente[0]}\nRut: {cliente[1]}\nNombre: {cliente[2]}\nDireccion: {cliente[3]}\nTelefono: {cliente[4]}\n\n' texto_area.delete(1.0, tk.END) texto_area.insert(tk.END, texto) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar un cliente en la base de datos def actualizar_cliente(): try: ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') ventana_actualizar.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() nombre = tk.StringVar() direccion = tk.StringVar() telefono = tk.StringVar() # Etiquetas y campos de texto para ingresar los datos del cliente tk.Label(ventana_actualizar, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_actualizar, textvariable=rut).grid(row=0, column=1) tk.Label(ventana_actualizar, text='Nombre:').grid(row=1, column=0) tk.Entry(ventana_actualizar, textvariable=nombre).grid(row=1, column=1) tk.Label(ventana_actualizar, text='Direccion:').grid(row=2, column=0) tk.Entry(ventana_actualizar, textvariable=direccion).grid(row=2, column=1) tk.Label(ventana_actualizar, text='Telefono:').grid(row=3, column=0) tk.Entry(ventana_actualizar, textvariable=telefono).grid(row=3, column=1) # Botones para actualizar y cancelar tk.Button(ventana_actualizar, text='Actualizar', command=lambda: actualizar_cliente_db(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_actualizar, text='Cancelar', command=ventana_actualizar.destroy).grid(row=4, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar un cliente en la base de datos def actualizar_cliente_db(rut, nombre, direccion, telefono): try: if nombre.get().isalpha() and direccion.get().isalpha(): cursor.execute('UPDATE TablaClientes SET Nombre = ?, Direccion = ?, Telefono = ? WHERE Rut = ?', (nombre.get(), direccion.get(), telefono.get(), rut.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') else: messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar un cliente de la base de datos def eliminar_cliente(): try: ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') ventana_eliminar.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() # Etiqueta y campo de texto para ingresar el rut del cliente tk.Label(ventana_eliminar, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_eliminar, textvariable=rut).grid(row=0, column=1) # Botones para eliminar y cancelar tk.Button(ventana_eliminar, text='Eliminar', command=lambda: eliminar_cliente_db(rut)).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 un cliente de la base de datos def eliminar_cliente_db(rut): try: cursor.execute('DELETE FROM TablaClientes WHERE Rut = ?', (rut.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Crear la ventana principal root = tk.Tk() root.title('Sistema de Clientes') root.geometry('800x600') # Crear la barra de menú menubar = tk.Menu(root) root.config(menu=menubar) # Crear los menús menu_cliente = tk.Menu(menubar, tearoff=0) menu_cliente.add_command(label='Registro de Clientes', command=registrar_cliente) menu_cliente.add_command(label='Mostrar Clientes', command=mostrar_clientes) menu_cliente.add_command(label='Actualizar Cliente', command=actualizar_cliente) menu_cliente.add_command(label='Eliminar Cliente', command=eliminar_cliente) menubar.add_cascade(label='Cliente', menu=menu_cliente) menu_acerca = tk.Menu(menubar, tearoff=0) menu_acerca.add_command(label='Versión del Sistema') menubar.add_cascade(label='Acerca de..', menu=menu_acerca) menu_salida = tk.Menu(menubar, tearoff=0) menu_salida.add_command(label='Salir', command=root.destroy) menubar.add_cascade(label='Salida', menu=menu_salida) # Crear los botones para crear y eliminar la base de datos boton_crear = tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos) boton_eliminar = tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos) boton_crear.pack(side=tk.RIGHT) boton_eliminar.pack(side=tk.RIGHT) # Crear el área de texto para mostrar los clientes texto_area = tk.Text(root) texto_area.pack(fill=tk.BOTH, expand=True) # Mostrar la ventana principal root.mainloop() ``` Este código crea una ventana principal con una barra de menú que contiene los menús "Cliente", "Acerca de.." y "Salida". El menú "Cliente" contiene los comandos "Registro de Clientes", "Mostrar Clientes", "Actualizar Cliente" y "Eliminar Cliente". El menú "Acerca de.." contiene el comando "Versión del Sistema". El menú "Salida" contiene el comando "Salir". La ventana principal también contiene dos botones para crear y eliminar la base de datos, y un área de texto para mostrar los clientes. Cuando se selecciona un comando del menú, se ejecuta la función correspondiente. Por ejemplo, cuando se selecciona el comando "Registro de Clientes", se abre una ventana para ingresar los datos del cliente y registrarlos en la base de datos. Espero que esto te ayude. ¡Si tienes alguna pregunta o necesitas más ayuda, no dudes en preguntar!