Cambios de ultima hora

This commit is contained in:
Andrés Moran 2024-12-13 00:02:10 +01:00
parent 464d98cc11
commit dc26c1f5e6
3 changed files with 34 additions and 28 deletions

View File

@ -4,7 +4,7 @@ import threading
import random import random
import time import time
running = True # Variable global para controlar el estado de los hilos running = True
def actualizar_grafico_criptomonedas_api(canvas, ax): def actualizar_grafico_criptomonedas_api(canvas, ax):
@ -12,7 +12,7 @@ def actualizar_grafico_criptomonedas_api(canvas, ax):
while True: while True:
if not running: # Verifica si el programa está en ejecución if not running: # Verifica si el programa está en ejecución
break break
if not canvas.get_tk_widget().winfo_exists(): # Verifica si el Canvas sigue existiendo if not canvas.get_tk_widget().winfo_exists():
break break
try: try:
# Solicitar datos de precios de criptomonedas # Solicitar datos de precios de criptomonedas
@ -42,13 +42,12 @@ def actualizar_grafico_ibex_api(canvas, ax):
while True: while True:
if not running: # Verifica si el programa está en ejecución if not running: # Verifica si el programa está en ejecución
break break
if not canvas.get_tk_widget().winfo_exists(): # Verifica si el Canvas sigue existiendo if not canvas.get_tk_widget().winfo_exists():
break break
try: try:
# Obtener datos históricos de IBEX 35 # Obtener datos históricos de IBEX 35
data = yf.Ticker("^IBEX").history(period="1d", interval="5m") data = yf.Ticker("^IBEX").history(period="1d", interval="5m")
# Extraer los precios de cierre
close_prices = data['Close'].values close_prices = data['Close'].values
# Actualizar el gráfico con los datos reales # Actualizar el gráfico con los datos reales
@ -59,13 +58,13 @@ def actualizar_grafico_ibex_api(canvas, ax):
canvas.draw() canvas.draw()
except Exception as e: except Exception as e:
print(f"Error al obtener datos del IBEX: {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): def iniciar_hilos(canvas_cripto, ax_cripto, canvas_ibex, ax_ibex):
"""Inicia los hilos de actualización de gráficos.""" """Inicia los hilos de actualización de gráficos."""
global running global running
running = True # Asegurar que los hilos pueden ejecutarse running = True
# Hilo para criptomonedas # Hilo para criptomonedas
thread_criptomonedas = threading.Thread( thread_criptomonedas = threading.Thread(

View File

@ -1,5 +1,6 @@
import tkinter as tk import tkinter as tk
import threading import threading
import time
def actualizar_todo_list(todo_listbox, tareas): def actualizar_todo_list(todo_listbox, tareas):
"""Actualizar el contenido del ListBox con las tareas actuales.""" """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}") todo_listbox.insert(tk.END, f"{estado} {tarea}")
def agregar_tarea(entry, todo_listbox, tareas): def agregar_tarea(entry, todo_listbox, tareas):
"""Agregar una nueva tarea a la lista.""" """Agregar una nueva tarea a la lista en un hilo separado."""
nueva_tarea = entry.get() def tarea_hilo():
if nueva_tarea.strip(): nueva_tarea = entry.get()
tareas.append((nueva_tarea, False)) # Agregar tarea como no completada if nueva_tarea.strip():
actualizar_todo_list(todo_listbox, tareas) tareas.append((nueva_tarea, False)) # Agregar tarea como no completada
entry.delete(0, tk.END) 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): def eliminar_tarea(todo_listbox, tareas):
"""Eliminar la tarea seleccionada de la lista.""" """Eliminar la tarea seleccionada de la lista en un hilo separado."""
seleccion = todo_listbox.curselection() def tarea_hilo():
if seleccion: seleccion = todo_listbox.curselection()
indice = seleccion[0] if seleccion:
tareas.pop(indice) indice = seleccion[0]
actualizar_todo_list(todo_listbox, tareas) 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): def marcar_tarea(todo_listbox, tareas):
"""Marcar la tarea seleccionada como completada o no completada.""" """Marcar la tarea seleccionada como completada o no completada en un hilo separado."""
seleccion = todo_listbox.curselection() def tarea_hilo():
if seleccion: seleccion = todo_listbox.curselection()
indice = seleccion[0] if seleccion:
tarea, completada = tareas[indice] indice = seleccion[0]
tareas[indice] = (tarea, not completada) # Alternar el estado de completada tarea, completada = tareas[indice]
actualizar_todo_list(todo_listbox, tareas) 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): def crear_solapa_todo(tab):
"""Función para inicializar la funcionalidad de la lista To-Do en la solapa.""" """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 = tk.Entry(tab, font=("Arial", 12))
entry.pack(pady=10, padx=10, fill="x") entry.pack(pady=10, padx=10, fill="x")
@ -58,4 +65,4 @@ def crear_solapa_todo(tab):
boton_marcar.pack(pady=5) boton_marcar.pack(pady=5)
# Inicializar la lista vacía # Inicializar la lista vacía
actualizar_todo_list(todo_listbox, tareas) actualizar_todo_list(todo_listbox, tareas)

BIN
image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB