Requisito previo: GUI de Python: tkinter , winsound, time y datetime .
Como todos sabemos, hoy en día despertarse a tiempo es una tarea muy difícil. La solución es el despertador. En este artículo, aprenderemos cómo crear un despertador usando Tkinter en Python. Sin alarmas, varias personas se quedarían dormidas y llegarían tarde al trabajo. Los despertadores también pueden ser útiles para mantener los horarios de sueño regulares.
- Tkinter: Python ofrece múltiples opciones para desarrollar una GUI (interfaz gráfica de usuario). De todas las estrategias de GUI, tkinter es la técnica más utilizada. Es una interfaz habitual de Python para el kit de herramientas Tk GUI que se envía con Python.
- Winsound: el módulo winsound brinda acceso a la maquinaria esencial de reproducción de sonido proporcionada por las plataformas Windows. Incluye funciones y una serie de otras constantes. Pite el altavoz de la PC.
- tiempo: el módulo de tiempo en Python proporciona diversas funciones relacionadas con el tiempo. Este módulo viene con los módulos normales de Python.
- datetime: el enfoque principal de datetime es simplificar el acceso a los atributos de la cosa asociada con fechas, horas y zonas horarias.
A continuación se muestra el aspecto de la GUI:
Entendamos la implementación paso a paso:
Paso 1: importar la biblioteca requerida
Python3
# Import Required Library from tkinter import * import datetime import time import winsound
Paso 2: agregue botones, etiquetas, marcos y menús de opciones
Sintaxis:
# Botón
Botón (Nombre del objeto, texto = «Introducir texto», ** atributo)
# Etiqueta
Etiqueta (Nombre del objeto, texto = «Ingresar texto», comando = «Ingresar comando», ** atributo)
# Cuadro
Marco (Nombre de objeto, ** atributo)
# Menú de opciones
OptionMenu(“Nombre de objeto”, “Tipo de datos”, “lista de valores en forma de tupla”, **attr)
Crearemos un menú de tres opciones:-
- Horas (00–24)
- Minutos (00–60)
- Segundos (00–60)
La hora está en formato de 24 horas.
Paso 3: Cree una función llamada alarm() , que realice el trabajo de despertador.
Python3
def alarm(): # Infinite Loop while True: # Set Alarm set_alarm = f"{hour.get()}:{minute.get()}:{second.get()}" # Wait for one seconds time.sleep(1) # Get current time current_time = datetime.datetime.now().strftime("%H:%M:%S") # Check whether set alarm is equal to current time or not if current_time == set_alarm: print("Time to Wake up") # Playing sound winsound.PlaySound("sound.wav",winsound.SND_ASYNC)
A continuación se muestra la implementación completa:
- Hacer bucle infinito
- Obtenga el valor de horas, minutos y segundos del usuario
- Espere un segundo usando el módulo de tiempo
- Obtenga la hora actual usando el módulo de fecha y hora
- Compruebe si la hora actual es igual a la hora establecida; reproducir sonido usando el módulo winsound
Python3
# Import Required Library from tkinter import * import datetime import time import winsound from threading import * # Create Object root = Tk() # Set geometry root.geometry("400x200") # Use Threading def Threading(): t1=Thread(target=alarm) t1.start() def alarm(): # Infinite Loop while True: # Set Alarm set_alarm_time = f"{hour.get()}:{minute.get()}:{second.get()}" # Wait for one seconds time.sleep(1) # Get current time current_time = datetime.datetime.now().strftime("%H:%M:%S") print(current_time,set_alarm_time) # Check whether set alarm is equal to current time or not if current_time == set_alarm_time: print("Time to Wake up") # Playing sound winsound.PlaySound("sound.wav",winsound.SND_ASYNC) # Add Labels, Frame, Button, Optionmenus Label(root,text="Alarm Clock",font=("Helvetica 20 bold"),fg="red").pack(pady=10) Label(root,text="Set Time",font=("Helvetica 15 bold")).pack() frame = Frame(root) frame.pack() hour = StringVar(root) hours = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24' ) hour.set(hours[0]) hrs = OptionMenu(frame, hour, *hours) hrs.pack(side=LEFT) minute = StringVar(root) minutes = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60') minute.set(minutes[0]) mins = OptionMenu(frame, minute, *minutes) mins.pack(side=LEFT) second = StringVar(root) seconds = ('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60') second.set(seconds[0]) secs = OptionMenu(frame, second, *seconds) secs.pack(side=LEFT) Button(root,text="Set Alarm",font=("Helvetica 15"),command=Threading).pack(pady=20) # Execute Tkinter root.mainloop()
Producción: