Construir un reloj digital con Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, crearemos una aplicación de reloj digital utilizando Python y la biblioteca Tkinter. Este reloj mostrará tanto la hora actual como la fecha, y permitirá al usuario alternar entre los formatos de hora de 12 horas y 24 horas. Dividiremos el código en múltiples pasos, comenzando con la instalación de las bibliotecas necesarias y terminando con la ejecución del proyecto.

👀 Vista previa

Vista previa de la aplicación de reloj digital

🎯 Tareas

En este proyecto, aprenderá:

  • Cómo instalar las bibliotecas necesarias para construir un reloj digital con Python.
  • Cómo configurar el proyecto creando el script de Python e importando las bibliotecas necesarias.
  • Cómo definir una función para actualizar y mostrar la hora y la fecha actuales.
  • Cómo crear una función para alternar entre los formatos de hora de 12 horas y 24 horas.
  • Cómo crear la ventana principal de la aplicación y configurar los estilos de la interfaz gráfica de usuario (GUI).
  • Cómo crear y colocar los componentes de la GUI en la ventana principal.
  • Cómo iniciar el reloj llamando a las funciones necesarias y ejecutando el bucle principal de la GUI.

🏆 Logros

Después de completar este proyecto, podrá:

  • Instalar bibliotecas utilizando pip, el administrador de paquetes de Python.
  • Utilizar la biblioteca Tkinter para crear interfaces gráficas de usuario en Python.
  • Formatear y mostrar la hora y la fecha en Python.
  • Personalizar la apariencia de los componentes de la GUI utilizando estilos temáticos.
  • Crear botones con diferentes textos y funcionalidades.
  • Ejecutar un script de Python y ejecutar un bucle principal de la GUI.

Instalar las bibliotecas necesarias

Antes de comenzar a construir nuestro reloj digital con Python, debemos asegurarnos de tener instaladas las bibliotecas necesarias. En este paso, instalaremos las bibliotecas necesarias utilizando pip, el administrador de paquetes de Python.

sudo apt update
sudo apt-get install python3-tk -y
pip install ttkthemes

Estas son las funciones de estas bibliotecas:

  • tkinter: Esta biblioteca proporciona las herramientas y componentes necesarios para crear interfaces gráficas de usuario (GUIs) en Python. Es una biblioteca estándar para el desarrollo de GUIs.
  • ttkthemes: Esta biblioteca nos permite utilizar estilos temáticos y personalizar la apariencia de nuestros componentes de Tkinter para dar a nuestro reloj digital un diseño visualmente atractivo.

Puedes instalar estas bibliotecas utilizando los comandos anteriores en tu terminal o línea de comandos. Una vez instaladas, estás listo para continuar con la construcción del reloj digital según se describe en los siguientes pasos.

Ahora, crea un nuevo archivo de Python llamado digital_clock.py y dile que lo abra en tu editor de código preferido.

cd ~/project
touch digital_clock.py
✨ Revisar Solución y Practicar

Configurando el proyecto

Primero, configuraremos el proyecto creando el script de Python necesario e importando las bibliotecas requeridas.

## Import necessary libraries
import tkinter as tk
from tkinter import ttk
from ttkthemes import ThemedStyle
from time import strftime

En este paso:

  • Importamos la biblioteca tkinter para crear la interfaz gráfica de usuario (GUI).
  • Importamos componentes específicos (ttk, ThemedStyle) de tkinter para un estilo avanzado.
  • Importamos la función strftime del módulo time para formatear y mostrar la hora.
✨ Revisar Solución y Practicar

Definir la función de visualización de tiempo

A continuación, definamos una función para actualizar y mostrar la hora y la fecha actuales.

def time():
    current_time_format = "%H:%M:%S" if is_24_hour_format else "%I:%M:%S %p"
    current_time = strftime(current_time_format)
    current_date = strftime("%A, %B %d, %Y")
    label_time.config(text=current_time)
    label_date.config(text=current_date)
    label_time.after(1000, time)

En este paso:

  • Creamos una función llamada time() que actualiza las etiquetas de hora y fecha.
  • La variable current_time_format determina si se utiliza un formato de hora de 24 horas o de 12 horas en función de la bandera is_24_hour_format.
  • Utilizamos la función strftime para obtener la hora y la fecha actuales en el formato deseado.
  • Las etiquetas (label_time y label_date) se actualizan con la hora y la fecha actuales, respectivamente.
  • La línea label_time.after(1000, time) programa la función time para que se ejecute cada 1000 milisegundos (1 segundo) para actualizar la hora de forma continua.
✨ Revisar Solución y Practicar

Alternar el formato de hora

Vamos a crear una función que permita al usuario alternar entre los formatos de hora de 12 horas y 24 horas.

def toggle_time_format():
    global is_24_hour_format
    is_24_hour_format = not is_24_hour_format
    time_format_button.config(text="12 Hour" if is_24_hour_format else "24 Hour")

En este paso:

  • Definimos una función llamada toggle_time_format() que alterna la bandera is_24_hour_format entre True y False.
  • La etiqueta del botón de formato de hora (time_format_button) se actualiza para mostrar "12 Hour" o "24 Hour" según el formato actual.
✨ Revisar Solución y Practicar

Crear la ventana principal de la aplicación

Ahora, vamos a crear la ventana principal de la aplicación y establecer su título y dimensiones.

root = tk.Tk()
root.title("Digital Clock")
root.geometry("400x250")

En este paso:

  • Creamos la ventana principal de la aplicación utilizando tk.Tk().
  • Establecemos el título de la ventana en "Digital Clock".
  • Las dimensiones de la ventana se establecen en 400x250 píxeles.
✨ Revisar Solución y Practicar

Configurar los estilos de la interfaz gráfica de usuario (GUI)

Configure los estilos para las etiquetas, botones y marcos para personalizar la apariencia del reloj.

style = ThemedStyle(root)
style.set_theme("plastik")
style.configure(
    "TLabel", foreground="#FF5733", background="#333333", font=("calibri", 48, "bold")
)
style.configure(
    "TButton", foreground="#FF5733", background="#333333", font=("calibri", 10, "bold")
)
style.configure("TFrame", background="#333333")

En este paso:

  • Creamos un estilo temático para los componentes de la GUI para aplicar una apariencia y sensación coherentes.
  • Se personaliza el color del texto de la etiqueta, el color de fondo y la fuente.
  • Se personaliza el color del texto del botón, el color de fondo y la fuente.
  • Se personaliza el color de fondo del marco.
✨ Revisar Solución y Practicar

Crear y colocar componentes de la interfaz gráfica de usuario (GUI)

Ahora, vamos a crear y colocar los componentes de la GUI en la ventana principal.

frame = ttk.Frame(root, style="TFrame", padding=20)
frame.place(relx=0.5, rely=0.5, anchor="center")

label_time = ttk.Label(frame, font=("calibri", 48, "bold"))
label_time.pack()

label_date = ttk.Label(frame, font=("calibri", 16))
label_date.pack()

is_24_hour_format = True
time_format_button = ttk.Button(
    frame, text="12 Hour", command=toggle_time_format, style="TButton"
)
time_format_button.pack(pady=20)

En este paso:

  • Creamos un marco (frame) con el estilo y el relleno especificados.
  • El marco se centra en la ventana principal.
  • Se crean dos etiquetas (label_time y label_date) para mostrar la hora y la fecha.
  • Se establece un valor inicial de True para is_24_hour_format.
  • Se crea un botón (time_format_button) con el texto "12 Hour" y la función toggle_time_format se establece como su comando.
  • Todos los componentes se empaquetan y se colocan en el marco.
✨ Revisar Solución y Practicar

Iniciar el reloj

Finalmente, vamos a iniciar el reloj llamando a la función time y ejecutando el bucle principal de la GUI.

time()

root.mainloop()

En este paso:

  • Llamamos a la función time() para iniciar el reloj.
  • El método root.mainloop() inicia el bucle principal de la GUI, lo que permite que la aplicación se ejecute y se actualice en tiempo real.

Ahora, ejecutemos la aplicación del reloj digital.

cd ~/project
python digital_clock.py
Interfaz de la aplicación del reloj digital
✨ Revisar Solución y Practicar

Resumen

En este proyecto, hemos creado una aplicación de reloj digital utilizando Python y Tkinter. Hemos dividido el proceso en varios pasos, incluyendo la configuración del proyecto, la definición de funciones para la visualización del tiempo y el cambio de formato, la configuración de los estilos de la interfaz gráfica de usuario (GUI), la creación de componentes de la GUI y la ejecución de la aplicación del reloj. Este reloj digital muestra la hora y la fecha actuales y permite a los usuarios cambiar entre los formatos de hora de 12 horas y 24 horas.