Пишем будильник на Python

Статьи

Введение

В ходе статьи напишем будильник с графическим интерфейсом на языке программирования Python.

Установка модуля playsound

Для написания будильника нам понадобится модуль под названием playsound. Для его установки нужно перейти в терминал, или же командную строку, прописать pip install playsound, нажать Enter и ждать установки.

Пишем будильник на Python

Импортируем класс datetime из модуля datetime, и playsound из модуля playsound:

from datetime import datetime
from playsound import playsound

Создадим функцию validate_time(), в качестве аргумента укажем alarm_time. В аргумент alarm_time будет передаваться время точное время срабатывания будильника:

Внутри функции зададим условие, что если длина alarm_time не равно восьми, то возвращается надпись «Неверный формат, попробуйте снова». Если же условие не сработало, то срабатывает else, в котором производится проверка правильности ввода времени, и если всё в норме, возвращается текст «Верно»:

from datetime import datetime
from playsound import playsound


def validate_time(alarm_time):
    if len(alarm_time) != 8:
        return "Неверный формат, попробуйте снова"
    else:
        if int(alarm_time[0:2]) > 23:
            return "Неверный формат часов, попробуйте снова"
        elif int(alarm_time[3:5]) > 59:
            return "Неверный формат минут, попробуйте снова"
        elif int(alarm_time[6:8]) > 59:
            return "Неверный формат секунд, попробуйте снова"
        else:
            return "Верно"

Создадим бесконечный цикл, в котором будет производиться ввод времени воспроизведения будильника, после чего производиться проверка на правильность ввода при помощи созданной нами ранее функции validate_time():

from datetime import datetime
from playsound import playsound


def validate_time(alarm_time):
    if len(alarm_time) != 8:
        return "Неверный формат, попробуйте снова"
    else:
        if int(alarm_time[0:2]) > 23:
            return "Неверный формат часов, попробуйте снова"
        elif int(alarm_time[3:5]) > 59:
            return "Неверный формат минут, попробуйте снова"
        elif int(alarm_time[6:8]) > 59:
            return "Неверный формат секунд, попробуйте снова"
        else:
            return "Верно"


while True:
    # Запрашиваем время установки будильника
    alarm_time = input("Введите время будильника в следующем формате 'HH:MM:SS' \n Время будильника: ")

    validate = validate_time(alarm_time)  # присваиваем результаты функции
    if validate != "Верно":
        print(validate)
    else:
        print(f"Будильник установлен на {alarm_time}...")
        break

Отдельно сохраним часы, минуты и секунды в разные переменные:

from datetime import datetime
from playsound import playsound


def validate_time(alarm_time):
    if len(alarm_time) != 8:
        return "Неверный формат, попробуйте снова"
    else:
        if int(alarm_time[0:2]) > 23:
            return "Неверный формат часов, попробуйте снова"
        elif int(alarm_time[3:5]) > 59:
            return "Неверный формат минут, попробуйте снова"
        elif int(alarm_time[6:8]) > 59:
            return "Неверный формат секунд, попробуйте снова"
        else:
            return "Верно"


while True:
    # Запрашиваем время установки будильника
    alarm_time = input("Введите время будильника в следующем формате 'HH:MM:SS' \n Время будильника: ")

    validate = validate_time(alarm_time)  # присваиваем результаты функции
    if validate != "Верно":
        print(validate)
    else:
        print(f"Будильник установлен на {alarm_time}...")
        break

alarm_hour = int(alarm_time[0:2])
alarm_min = int(alarm_time[3:5])
alarm_sec = int(alarm_time[6:8])

Создадим бесконечный цикл, в котором для начала получим текущую дату и время:

from datetime import datetime
from playsound import playsound


def validate_time(alarm_time):
    if len(alarm_time) != 8:
        return "Неверный формат, попробуйте снова"
    else:
        if int(alarm_time[0:2]) > 23:
            return "Неверный формат часов, попробуйте снова"
        elif int(alarm_time[3:5]) > 59:
            return "Неверный формат минут, попробуйте снова"
        elif int(alarm_time[6:8]) > 59:
            return "Неверный формат секунд, попробуйте снова"
        else:
            return "Верно"


while True:
    # Запрашиваем время установки будильника
    alarm_time = input("Введите время будильника в следующем формате 'HH:MM:SS' \n Время будильника: ")

    validate = validate_time(alarm_time)  # присваиваем результаты функции
    if validate != "Верно":
        print(validate)
    else:
        print(f"Будильник установлен на {alarm_time}...")
        break

alarm_hour = int(alarm_time[0:2])
alarm_min = int(alarm_time[3:5])
alarm_sec = int(alarm_time[6:8])

while True:
    now = datetime.now()

    current_hour = now.hour  # Получение текущего часа
    current_min = now.minute  # Получение текущей минуты
    current_sec = now.second  # Получение текущей секунды

Добавим условие, что если введённый пользователем час совпадает с нынешним, то переходим во вложенное условие, проверяем минуты, и по такому же принципу секунды. Если же сработали все условия, то включаем мелодию указанную в пути:

from datetime import datetime
from playsound import playsound


def validate_time(alarm_time):
    if len(alarm_time) != 8:
        return "Неверный формат, попробуйте снова"
    else:
        if int(alarm_time[0:2]) > 23:
            return "Неверный формат часов, попробуйте снова"
        elif int(alarm_time[3:5]) > 59:
            return "Неверный формат минут, попробуйте снова"
        elif int(alarm_time[6:8]) > 59:
            return "Неверный формат секунд, попробуйте снова"
        else:
            return "Верно"


while True:
    # Запрашиваем время установки будильника
    alarm_time = input("Введите время будильника в следующем формате 'HH:MM:SS' \n Время будильника: ")

    validate = validate_time(alarm_time)  # присваиваем результаты функции
    if validate != "Верно":
        print(validate)
    else:
        print(f"Будильник установлен на {alarm_time}...")
        break

alarm_hour = int(alarm_time[0:2])
alarm_min = int(alarm_time[3:5])
alarm_sec = int(alarm_time[6:8])

while True:
    now = datetime.now()

    current_hour = now.hour  # Получение текущего часа
    current_min = now.minute  # Получение текущей минуты
    current_sec = now.second  # Получение текущей секунды

    if alarm_hour == current_hour:
        if alarm_min == current_min:
            if alarm_sec == current_sec:
                print("Подъем!")
                playsound('C:/music.mp3') # Путь до аудиозаписи
                break

Заключение

В ходе статьи мы с Вами написали будильник с графическим интерфейсом на языке программирования Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin
Admin
IT Start