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
Aquí te muestro un ejemplo de código en Python que utiliza la biblioteca Tkinter para crear una interfaz gráfica con los botones y la base de datos que solicitaste: ```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 agregar cliente def agregar_cliente(): ventana_agregar = tk.Toplevel(root) ventana_agregar.title('Agregar Cliente') tk.Label(ventana_agregar, text='Rut:').grid(row=0, column=0) tk.Label(ventana_agregar, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_agregar, text='Direccion:').grid(row=2, column=0) tk.Label(ventana_agregar, text='Telefono:').grid(row=3, column=0) rut = tk.Entry(ventana_agregar) nombre = tk.Entry(ventana_agregar) direccion = tk.Entry(ventana_agregar) telefono = tk.Entry(ventana_agregar) rut.grid(row=0, column=1) nombre.grid(row=1, column=1) direccion.grid(row=2, column=1) telefono.grid(row=3, column=1) def guardar_cliente(): try: cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente agregado con éxito') ventana_agregar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_agregar, text='Guardar', command=guardar_cliente).grid(row=4, column=0, columnspan=2) # Función para actualizar cliente def actualizar_cliente(): ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') tk.Label(ventana_actualizar, text='Id:').grid(row=0, column=0) tk.Label(ventana_actualizar, text='Rut:').grid(row=1, column=0) tk.Label(ventana_actualizar, text='Nombre:').grid(row=2, column=0) tk.Label(ventana_actualizar, text='Direccion:').grid(row=3, column=0) tk.Label(ventana_actualizar, text='Telefono:').grid(row=4, column=0) id = tk.Entry(ventana_actualizar) rut = tk.Entry(ventana_actualizar) nombre = tk.Entry(ventana_actualizar) direccion = tk.Entry(ventana_actualizar) telefono = tk.Entry(ventana_actualizar) id.grid(row=0, column=1) rut.grid(row=1, column=1) nombre.grid(row=2, column=1) direccion.grid(row=3, column=1) telefono.grid(row=4, column=1) def actualizar_cliente_db(): try: cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), id.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') ventana_actualizar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_actualizar, text='Actualizar', command=actualizar_cliente_db).grid(row=5, column=0, columnspan=2) # Función para eliminar cliente def eliminar_cliente(): ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') tk.Label(ventana_eliminar, text='Id:').grid(row=0, column=0) id = tk.Entry(ventana_eliminar) id.grid(row=0, column=1) def eliminar_cliente_db(): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (id.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') ventana_eliminar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_eliminar, text='Eliminar', command=eliminar_cliente_db).grid(row=1, 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) # Crear ventana principal root = tk.Tk() root.title('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='Agregar Cliente', command=agregar_cliente).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='Mostrar Clientes', command=mostrar_clientes).pack(side=tk.RIGHT) tk.Button(root, text='Salir', command=root.destroy).pack(side=tk.RIGHT) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con los botones solicitados y una ventana secundaria para cada acción. La ventana secundaria se utiliza para agregar, actualizar y eliminar clientes, y para mostrar la lista de clientes. La base de datos se crea y se conecta automáticamente al iniciar la aplicación.