Proyecto base
This commit is contained in:
commit
7a465d4c21
|
@ -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()
|
|
@ -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()
|
Loading…
Reference in New Issue