diff --git a/app/graphics.py b/app/graphics.py index b563042..f49e994 100644 --- a/app/graphics.py +++ b/app/graphics.py @@ -4,7 +4,7 @@ import threading import random import time -running = True # Variable global para controlar el estado de los hilos +running = True def actualizar_grafico_criptomonedas_api(canvas, ax): @@ -12,7 +12,7 @@ def actualizar_grafico_criptomonedas_api(canvas, ax): while True: if not running: # Verifica si el programa está en ejecución break - if not canvas.get_tk_widget().winfo_exists(): # Verifica si el Canvas sigue existiendo + if not canvas.get_tk_widget().winfo_exists(): break try: # Solicitar datos de precios de criptomonedas @@ -42,13 +42,12 @@ def actualizar_grafico_ibex_api(canvas, ax): while True: if not running: # Verifica si el programa está en ejecución break - if not canvas.get_tk_widget().winfo_exists(): # Verifica si el Canvas sigue existiendo + if not canvas.get_tk_widget().winfo_exists(): break try: # Obtener datos históricos de IBEX 35 data = yf.Ticker("^IBEX").history(period="1d", interval="5m") - # Extraer los precios de cierre close_prices = data['Close'].values # Actualizar el gráfico con los datos reales @@ -59,13 +58,13 @@ def actualizar_grafico_ibex_api(canvas, ax): canvas.draw() except Exception as e: print(f"Error al obtener datos del IBEX: {e}") - time.sleep(60) # Actualizar cada 5 minutos + time.sleep(60) def iniciar_hilos(canvas_cripto, ax_cripto, canvas_ibex, ax_ibex): """Inicia los hilos de actualización de gráficos.""" global running - running = True # Asegurar que los hilos pueden ejecutarse + running = True # Hilo para criptomonedas thread_criptomonedas = threading.Thread( diff --git a/app/todo_list.py b/app/todo_list.py index 08155de..30a54d1 100644 --- a/app/todo_list.py +++ b/app/todo_list.py @@ -1,5 +1,6 @@ import tkinter as tk import threading +import time def actualizar_todo_list(todo_listbox, tareas): """Actualizar el contenido del ListBox con las tareas actuales.""" @@ -9,35 +10,41 @@ def actualizar_todo_list(todo_listbox, tareas): todo_listbox.insert(tk.END, f"{estado} {tarea}") def agregar_tarea(entry, todo_listbox, tareas): - """Agregar una nueva tarea a la lista.""" - nueva_tarea = entry.get() - if nueva_tarea.strip(): - tareas.append((nueva_tarea, False)) # Agregar tarea como no completada - actualizar_todo_list(todo_listbox, tareas) - entry.delete(0, tk.END) + """Agregar una nueva tarea a la lista en un hilo separado.""" + def tarea_hilo(): + nueva_tarea = entry.get() + if nueva_tarea.strip(): + tareas.append((nueva_tarea, False)) # Agregar tarea como no completada + todo_listbox.after(0, actualizar_todo_list, todo_listbox, tareas) + entry.delete(0, tk.END) + threading.Thread(target=tarea_hilo).start() def eliminar_tarea(todo_listbox, tareas): - """Eliminar la tarea seleccionada de la lista.""" - seleccion = todo_listbox.curselection() - if seleccion: - indice = seleccion[0] - tareas.pop(indice) - actualizar_todo_list(todo_listbox, tareas) + """Eliminar la tarea seleccionada de la lista en un hilo separado.""" + def tarea_hilo(): + seleccion = todo_listbox.curselection() + if seleccion: + indice = seleccion[0] + tareas.pop(indice) + todo_listbox.after(0, actualizar_todo_list, todo_listbox, tareas) + threading.Thread(target=tarea_hilo).start() def marcar_tarea(todo_listbox, tareas): - """Marcar la tarea seleccionada como completada o no completada.""" - seleccion = todo_listbox.curselection() - if seleccion: - indice = seleccion[0] - tarea, completada = tareas[indice] - tareas[indice] = (tarea, not completada) # Alternar el estado de completada - actualizar_todo_list(todo_listbox, tareas) + """Marcar la tarea seleccionada como completada o no completada en un hilo separado.""" + def tarea_hilo(): + seleccion = todo_listbox.curselection() + if seleccion: + indice = seleccion[0] + tarea, completada = tareas[indice] + tareas[indice] = (tarea, not completada) # Alternar el estado de completada + todo_listbox.after(0, actualizar_todo_list, todo_listbox, tareas) + threading.Thread(target=tarea_hilo).start() def crear_solapa_todo(tab): """Función para inicializar la funcionalidad de la lista To-Do en la solapa.""" - tareas = [] # Lista para almacenar las tareas + tareas = [] - # Entry para agregar nuevas tareas + # Entrada para agregar nuevas tareas entry = tk.Entry(tab, font=("Arial", 12)) entry.pack(pady=10, padx=10, fill="x") @@ -58,4 +65,4 @@ def crear_solapa_todo(tab): boton_marcar.pack(pady=5) # Inicializar la lista vacía - actualizar_todo_list(todo_listbox, tareas) \ No newline at end of file + actualizar_todo_list(todo_listbox, tareas) diff --git a/image.png b/image.png new file mode 100644 index 0000000..2a02655 Binary files /dev/null and b/image.png differ