import tkinter as tk import threading def actualizar_todo_list(todo_listbox, tareas): """Actualizar el contenido del ListBox con las tareas actuales.""" todo_listbox.delete(0, tk.END) for tarea, completada in tareas: estado = "[X]" if completada else "[ ]" 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) 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) 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) 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 # Entry para agregar nuevas tareas entry = tk.Entry(tab, font=("Arial", 12)) entry.pack(pady=10, padx=10, fill="x") # Botón para agregar tareas boton_agregar = tk.Button(tab, text="Agregar", command=lambda: agregar_tarea(entry, todo_listbox, tareas)) boton_agregar.pack(pady=5) # ListBox para mostrar las tareas todo_listbox = tk.Listbox(tab, font=("Arial", 12), height=10) todo_listbox.pack(pady=10, padx=10, fill="both", expand=True) # Botón para eliminar tareas boton_eliminar = tk.Button(tab, text="Eliminar", command=lambda: eliminar_tarea(todo_listbox, tareas)) boton_eliminar.pack(pady=5) # Botón para marcar tareas como completadas o no completadas boton_marcar = tk.Button(tab, text="Marcar como hecho/no hecho", command=lambda: marcar_tarea(todo_listbox, tareas)) boton_marcar.pack(pady=5) # Inicializar la lista vacía actualizar_todo_list(todo_listbox, tareas)