commit 7a465d4c21837a954035f0fa91a7a588a5eab371 Author: kevin Date: Tue Dec 3 17:24:53 2024 +0100 Proyecto base diff --git a/main.py b/main.py new file mode 100644 index 0000000..af6f8e5 --- /dev/null +++ b/main.py @@ -0,0 +1,153 @@ +import tkinter as tk +from tkinter import Menu # Importar el widget Menu +from tkinter import ttk # Importar el widget ttk +import threading +import time +import datetime +import psutil + +def update_memoria(interval): + while True: + # Obtener el porcentaje de memoria usada + memory_usage = psutil.virtual_memory().percent + laber_text = "Uso RAM: " +f"{memory_usage:.2f}%"; + label_uso_memoria.after(1000,interval.config, {"text": laber_text}) + time.sleep(1) + + +def update_time(status_bar): + """Función que actualiza la hora y el día de la semana en un label""" + while True: + # Obtener la fecha y hora actual + now = datetime.datetime.now() + day_of_week = now.strftime("%A") # Día de la semana + time_str = now.strftime("%H:%M:%S") # Hora en formato HH:MM:SS + date_str = now.strftime("%Y-%m-%d") # Fecha en formato YYYY-MM-DD + label_text = f"{day_of_week}, {date_str} - {time_str}" + + # Actualizar el label (debemos usar `after` para asegurarnos que se actualice en el hilo principal de Tkinter) + label_fecha_hora.after(1000, status_bar.config, {"text": label_text}) + + # Espera 1 segundo antes de actualizar de nuevo + time.sleep(1) + + +# Crear la ventana principal +root = tk.Tk() +root.title("Ventana Responsive") +root.geometry("1000x700") # Tamaño inicial + +# Configurar la ventana principal para que sea responsive +root.columnconfigure(0, weight=0) # Columna izquierda, tamaño fijo +root.columnconfigure(1, weight=1) # Columna central, tamaño variable +root.columnconfigure(2, weight=0) # Columna derecha, tamaño fijo +root.rowconfigure(0, weight=1) # Fila principal, tamaño variable +root.rowconfigure(1, weight=0) # Barra de estado, tamaño fijo + +# Crear el menú superior +menu_bar = Menu(root) + +file_menu = Menu(menu_bar, tearoff=0) +file_menu.add_command(label="Nuevo") +file_menu.add_command(label="Abrir") +file_menu.add_separator() +file_menu.add_command(label="Salir", command=root.quit) + +edit_menu = Menu(menu_bar, tearoff=0) +edit_menu.add_command(label="Copiar") +edit_menu.add_command(label="Pegar") + +help_menu = Menu(menu_bar, tearoff=0) +help_menu.add_command(label="Acerca de") + +menu_bar.add_cascade(label="Archivo", menu=file_menu) +menu_bar.add_cascade(label="Editar", menu=edit_menu) +menu_bar.add_cascade(label="Ayuda", menu=help_menu) + +root.config(menu=menu_bar) + +# Crear los frames laterales y el central +frame_izquierdo = tk.Frame(root, bg="lightblue", width=200) +frame_central = tk.Frame(root, bg="white") +frame_derecho = tk.Frame(root, bg="lightgreen", width=200) + +# Colocar los frames laterales y el central +frame_izquierdo.grid(row=0, column=0, sticky="ns") +frame_central.grid(row=0, column=1, sticky="nsew") +frame_derecho.grid(row=0, column=2, sticky="ns") + +# Configurar los tamaños fijos de los frames laterales +frame_izquierdo.grid_propagate(False) +frame_derecho.grid_propagate(False) + +# Dividir el frame central en dos partes (superior variable e inferior fija) +frame_central.rowconfigure(0, weight=1) # Parte superior, tamaño variable +frame_central.rowconfigure(1, weight=0) # Parte inferior, tamaño fijo +frame_central.columnconfigure(0, weight=1) # Ocupa toda la anchura + +# Crear subframes dentro del frame central +frame_superior = tk.Frame(frame_central, bg="lightyellow") +frame_inferior = tk.Frame(frame_central, bg="lightgray", height=100) + +# Colocar los subframes dentro del frame central +frame_superior.grid(row=0, column=0, sticky="nsew") +frame_inferior.grid(row=1, column=0, sticky="ew") + +# Fijar el tamaño de la parte inferior +frame_inferior.grid_propagate(False) + +# Crear la barra de estado +barra_estado = tk.Label(root, text="Barra de estado", bg="lightgray", anchor="w") +barra_estado.grid(row=1, column=0, columnspan=3, sticky="ew") + +# Notebook para las pestañas + +style = ttk.Style() +style.configure("CustomNotebook.TNotebook.Tab", font=("Arial", 12, "bold")) +notebook = ttk.Notebook(frame_superior, style="CustomNotebook.TNotebook") +notebook.pack(fill="both", expand=True) + + +# Crear cinco solapas +for i in range(1, 6): + tab = ttk.Frame(notebook) + + notebook.add(tab, text=f"Solapa {i}", padding=4) + # Añadir un Label en cada solapa para diferenciarla + label = ttk.Label(tab, text=f"Contenido de la Solapa {i}") + label.pack(pady=10) + +# Barra de estado +# Dividir la barra de estado en 4 labels + + +# Usar pack para alinear los labels horizontalmente + + +label_1 = tk.Label(barra_estado, text="Estado 1", bg="green", anchor="w", width=20) +label_2 = tk.Label(barra_estado, text="Estado 2", bg="blue", anchor="w", width=20) +label_3 = tk.Label(barra_estado, text="Estado 3", bg="cyan", anchor="w", width=20) +label_uso_memoria = tk.Label(barra_estado, text="Estado 4", bg="pink", anchor="w", width=20) +label_fecha_hora = tk.Label(barra_estado, text="Hilo fecha-hora", font=("Helvetica", 14), bd=1, fg="blue", relief="sunken", anchor="w", width=20, padx=10) + +label_1.pack(side="left", fill="x", expand=True) +label_2.pack(side="left", fill="x", expand=True) +label_3.pack(side="left", fill="x", expand=True) +label_uso_memoria.pack(side="left", fill="x", expand=True) +label_fecha_hora.pack(side="right", fill="x", expand=True) +# barra_estado.grid(row=1, column=0, columnspan=3, sticky="ew") + + +update_thread = threading.Thread(target=update_time, args=(label_fecha_hora,)) +update_thread.daemon = True # Hacemos el hilo un demonio para que termine con la app +update_thread.start() + +update_thread_memoria = threading.Thread(target=update_memoria, args=(label_uso_memoria,)) +update_thread_memoria.daemon = True +update_thread_memoria.start() + +#Uso en memoria + + +# Ejecución de la aplicación +root.mainloop() \ No newline at end of file diff --git a/pruebas.py b/pruebas.py new file mode 100644 index 0000000..f498cd5 --- /dev/null +++ b/pruebas.py @@ -0,0 +1,22 @@ +import psutil +import time + +def print_memory_usage(interval=5): + """ + Imprime el uso de memoria RAM cada 'interval' segundos. + + Args: + interval (int): Intervalo de tiempo entre cada impresión (en segundos). + """ + try: + print("Monitoreando el uso de memoria RAM. Presiona Ctrl+C para detener.") + while True: + # Obtener el porcentaje de memoria usada + memory_usage = psutil.virtual_memory().percent + print(f"Uso de Memoria RAM: {memory_usage:.2f}%") + time.sleep(interval) + except KeyboardInterrupt: + print("\nMonitoreo detenido.") + +# Llama al método para monitorear la memoria +print_memory_usage() \ No newline at end of file