### Установка и импорт библиотек Перед написанием кода нам понадобится установить библиотеку **schedule** для планирования напоминаний и **plyer** для отображения системных уведомлений Windows. Сделать это можно через **pip**. Для этого нужно перейти в терминал/командную строку, прописать **pip install schedule plyer**, нажать Enter и ждать установки. ```bash pip install schedule plyer ``` После инсталляции импортируем все необходимые библиотеки: ```python import schedule import time from plyer import notification ``` - **schedule** — для планирования напоминаний; - **time** — для работы с задержками; - **plyer** — для отображения системных уведомлений. ### Написание кода программы-напоминалки на Python Первым делом создадим функцию **show_notification()**, которая будет вызывать системное уведомление. У функции будет присутствовать один параметр, а именно: - message — текст оповещения, переданный пользователем. ```python import schedule import time from plyer import notification def show_notification(message): ``` Внутри функции через объект **notification** обратимся к методу **notify()**, чтобы создать уведомление с заголовком «Напоминание», переданным пользователем текстом и длительностью равной 10 секунд: ```python import schedule import time from plyer import notification def show_notification(message): notification.notify( title="Напоминание", message=message, timeout=10 ) ``` Теперь создадим функцию **add_reminder()**, которая будет создавать напоминания. У функции будет присутствовать два параметра, а именно: - text — текст напоминания; - reminder_time — время, в которое должно сработать напоминание. ```python import schedule import time from plyer import notification def show_notification(message): notification.notify( title="Напоминание", message=message, timeout=10 ) def add_reminder(text, reminder_time): ``` Внутри функции будет добавляться задача в планировщик, чтобы каждый день в указанное время **reminder_time** вызывалась функция **show_notification()** с переданным текстом: ```python import schedule import time from plyer import notification def show_notification(message): notification.notify( title="Напоминание", message=message, timeout=10 ) def add_reminder(text, reminder_time): schedule.every().day.at(reminder_time).do(show_notification, message=text) print(f"Напоминание добавлено на {reminder_time}: {text}") ``` Теперь добавим точку входа, внутри которой будет находиться бесконечный цикл: ```python import schedule import time from plyer import notification def show_notification(message): notification.notify( title="Напоминание", message=message, timeout=10 ) def add_reminder(text, reminder_time): schedule.every().day.at(reminder_time).do(show_notification, message=text) print(f"Напоминание добавлено на {reminder_time}: {text}") if __name__ == "__main__": while True: ``` Внутри бесконечного цикла пользователю будет предложено ввести текст напоминания и время, в которое должно произойти напоминание. Далее будет идти вложенный бесконечный цикл, который ожидает выполнения напоминания. ```python import schedule import time from plyer import notification def show_notification(message): notification.notify( title="Напоминание", message=message, timeout=10 ) def add_reminder(text, reminder_time): schedule.every().day.at(reminder_time).do(show_notification, message=text) print(f"Напоминание добавлено на {reminder_time}: {text}") if __name__ == "__main__": while True: text = input("Введите текст напоминания: ") reminder_time = input("Введите время (формат ЧЧ:ММ): ") add_reminder(text, reminder_time) print("Ожидание напоминания...") while True: schedule.run_pending() time.sleep(1) ```