Construye una interfaz gráfica con Tkinter para programar una alarma. Practicarás widgets, validación de inputs y programación temporal básica.
Crear una app de alarmas con Tkinter

Tkinter te permite crear interfaces rápidas. Una app de alarmas es un ejercicio perfecto: inputs, validación y un “evento” que sucede más tarde.

1) UI mínima

import tkinter as tk
from tkinter import messagebox
import time
import threading

root = tk.Tk()
root.title("Alarma (demo)")

tk.Label(root, text="Hora (HH:MM):").pack(padx=12, pady=(12, 4))
hour_var = tk.StringVar()
tk.Entry(root, textvariable=hour_var).pack(padx=12, pady=(0, 12))

status = tk.Label(root, text="Sin alarma", fg="gray")
status.pack(pady=(0, 12))

2) Esperar sin bloquear la UI

La UI no debe congelarse: usamos un hilo que espera y luego “dispara” la alarma.

def wait_alarm(target_hhmm):
    while True:
        if time.strftime("%H:%M") == target_hhmm:
            root.after(0, lambda: messagebox.showinfo("Alarma", "¡Hora!"))
            break
        time.sleep(1)

def set_alarm():
    hhmm = hour_var.get().strip()
    if len(hhmm) != 5 or hhmm[2] != ":":
        messagebox.showerror("Error", "Formato HH:MM")
        return
    status.config(text=f"Alarma a las {hhmm}", fg="green")
    threading.Thread(target=wait_alarm, args=(hhmm,), daemon=True).start()

tk.Button(root, text="Activar alarma", command=set_alarm).pack(pady=(0, 12))
root.mainloop()

3) Ideas de mejora

  • Reproducir un audio (por ejemplo con playsound o pygame.mixer).
  • Permitir varias alarmas (lista + borrado).
  • Guardar alarmas en archivo/JSON.