добрый будильник на python
Для запуска вам потребуется установить непосредственной сам язык Python , Python for Windows extensions и положить библиотеку Winamp.py в папку Lib, расположенную в установочной директории Python. Эту библиотеку написал Arkadiusz Wahlig.
Скрипт будильника расположен тут, и запускается следующим образом:
goodalarm.py
Будильник + tkinter
Есть готовый вариант, но он при заведении нового времени проигрывает звук сразу по нескольку раз. Может кто подскажет как можно его улучшить, чтоб несколько будильников можно было сразу ставить. Чтоб проигрывал музыку только 1 раз.
1 2 3 4 5 6 7 8 9 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
from tkinter import * import datetime import time import winsound from threading import * root = Tk() root.geometry("400x200") def Threading(): t1 = Thread(target=alarm) t1.start() def alarm(): while True: set_alarm_time = f"::" time.sleep(1) current_time = datetime.datetime.now().strftime("%H:%M:%S") if current_time == set_alarm_time: print("Время просыпатся") winsound.PlaySound("sound.wav", winsound.SND_ASYNC) Label(root, text="Будильник", font=("Helvetica 20 bold"), fg="black").pack(pady=10) Label(root, text="Установите время", 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="Установить", font=("Helvetica 15"), command=Threading).pack(pady=20) root.mainloop()
Домашнее задание. Будильник
Простейший будильник должен позволить указать время срабатывания и уметь издавать звук.
Модуль SimpleAudio
Модуль SimpleAudio позволяет воспроизводить звуковые файлы в формате WAV через динамики компьютера. Ещё раз: он воспроизводит только файлы в формате WAV. Он не воспроизводит формат mp3, wma и прочие.
Установка в Windows
Чтобы установить модуль simpleaudio на Windows, откройте программу «Командная строка» (найдите её в меню Пуск или нажмите Win+R, введите cmd и нажмите «Выполнить»). Выполните там команду
pip install simpleaudio
Установка в Linux и macOS
Чтобы установить модуль simpleaudio на Linux или macOS, откройте программу «Терминал» и выполните там команду:
pip3 install simpleaudio
На Linux вам понадобятся права суперпользователя, либо команда sudo:
sudo pip3 install simpleaudio
Как воспроизвести звук?
Не будем вдаваться в подробности и построим код на основе примера из документации к модулю SimpleAudio (http://simpleaudio.readthedocs.io/en/latest/):
import simpleaudio def play_wave(filename): wave_object = simpleaudio.WaveObject.from_wave_file(filename) player = wave_object.play() player.wait_done()
Теперь мы можем воспроизводить любой WAV-файл при помощи вызова нашей функции play_wave() :
play_wave("C:\\python\\alarm.wav")
Постановка задачи
Требуется создать программу, которая делает следующее:
- Запрашивает у пользователя дату и время будильника (например, с помощью input)
- Сообщает, через какое время сработает будильник
- Если дата из прошлого, то сообщает об этом и прекращает работу
- В цикле ждёт наступления указанного времени
- Воспроизводит файл alarm.wav
Файл alarm.wav можно скачать отсюда: https://anhel.in/files/alarm.wav.zip. Не забудьте распаковать архив. Источник файла.
Замечания по реализации
При ожидании в цикле лучше использовать функцию sleep:
from time import sleep #. while some_condition: sleep(1) # Ждать одну секунду
Для определения наступления нужного момента используйте классы и функции из модуля datetime .
© 2019, Анатолий Грико
Как сделать будильник на python
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF
Цель: написать программу на языке программирования Pithon
Изучить нужную литературу
Создать визуализацию будильника
Установить библиотеки, которые понадобятся при написании кода
Написать и протестировать код
Проблема: Будильник обладает очень резким и пронзительным звуком, это было сделано для того чтобы воздействовать на наш организм, призывая его к активной деятельности. Однако неестественные и настойчивые сигналы только нарушают нормальную работу мозга, что негативно сказывается на работоспособности в течение дня.
Актуальность: Оттого с каким настроением мы встанем утром, будет зависеть весь день. Людям очень тяжело вставать по будильнику, ведь когда мы слышим раздражающий звук, то хочется поскорее его выключить и вернуться в страну снов. Это может привести к опозданиям, испорченным нервам и недосыпу. Но почему не попробовать вставать под свои любимые мелодии, которые точно обеспечат заряд бодрости и энергии на весь день. Безусловно на современных будильниках без проблем можно поставить понравившиеся песни, но как насчет разных мелодий в каждый день недели? В понедельник можно просыпаться под симфонию № 40 Моцарта, во вторник – под любимых поп исполнителей, в среду – под Богемскую Рапсодию и т.д.
Заниматься программированием на Pithon я начала относительно недавно, но недостаток знаний в этой области не помешал мне создать несложный код для будильника с легкой визуализацией на QtDesigner [2].
2.1Модули и библиотеки
Рис.1 Модули и библиотеки
1 — Модуль sys обеспечивает доступ к некоторым переменным и функциям, взаимодействующим с интерпретатором python. sys нужен для передачи argv в QApplication [1]
2 – clock – это название файла, где хранятся переменные, связанные с визуализацией. Из него импортируем класс Ui _ MainWindow
3 – из PyQt5.QtWidgets надо импортировать виджеты QApplication и QMainWindow
4 –модуль datetime предоставляет классы для работы со временем [3]
5 – time — модуль для работы со временем
6 – threading – модуль, позволяющий создавать потоки, т.е. запускать несколько операций одновременно [4]
7 – pygame – набор модулей для создания игр и мультимедийных приложений. Из этого модуля надо импортировать mixer для работы со звуком
2.2 Основное тело программы
11 – создаем класс Clock , куда передаем переменные из QMainWindow и Ui _ MainWindow
12, 13 — для инициализации экземпляра класса используется метод __init__(self),
в котором можно задать параметры объекта при его создании. self – это ссылка на текущий экземпляр класса. super – это ключевое слово, которое используется для обращения к родительскому классу.
14, 15 – в переменных start _ hour и start _ minute будет храниться информация о времени, когда будильник будет звонить
16 – в time будет храниться информация о том, через сколько должен сработать будильник
17 — атрибут flag, которому присвоено значение False
18 – setupUi ( self ) нужен для инициализации нашего дизайна
19 – self . initUi () – вызов метода initUi ()
21- создаём метод initUi
22 – обозначаем название будущего окна
23 — при нажатии на кнопку идет вызов метода start
24 — при нажатии на кнопку идет вызов метода stop
27, 28 – становится невозможным поменять значение переменных hour _ input и minutes _ input
29 – кнопка startButton становится неактивной
30,31– если в момент нажатии на стоп играет музыка, то она останавливается
33 – метод remind , куда предаются переменные music , day
34 – время, на которое должна «заснуть» программа
35, 36, 37 – вызываем мелодию в соответствии с днём недели [5]
38 – изменяем значение переменной flag на True
39, 40 – музыка играет 10 секунд и останавливается
41 — значение переменной flag изменяется на False
43 – метод start
44, 45, 46 – после нажатия на «старт» кнопки ввода часов, минут и старта становятся неактивными
47 – активная кнопка «стоп»
48, 49 – переменным start _ hour , start _ minutes передаются значения времени, которое выбрали
50, 51, 52 – программа считывает время в данный момент
53 – 66 – программа вычитает (в секундах) сколько времени надо ждать до звонка будильника
67 – 68 – список с музыкой
69 – в переменную day записываем номер текущего дня недели
70 – 71 – запускается поток с методом Thread
2.3 Готовый результат
Результат работы программы
3. Заключение и вывод
Вот так с помощью строчек кода можно написать программу для своего будильника. Думаю, что этот опыт был полезен для лучшего понимания программирования. В ходе работы я не только применила ранее полученные знания, но и впервые поработала с визуализацией. При создании будильника я училась находить различные ошибки, которые иногда очень сильно влияют на всю программу. Я думаю, что этот опыт был полезен и в будущем он мне, несомненно, поможет.
Изучая разные языки программирования можно составлять различны алгоритмы для решения сложных задач. Я задалась целью создать будильник для комфортного пробуждения, и мне это удалось благодаря информатике.
Будущее стоит за информационными технологиями, которые существенно облегчают многие рутинные процессы, экономят время и энергию.
Применив будильник на практике, я убедилась, что это удобно и полезно. Многие люди с трудом встают по утрам, а с будильником, который каждый день будит твоей любимой музыкой, ранний подъём не составит проблем. С оздав свой будильник, я поняла, что это возможность не только получить новые эмоции и ощущения, а также набраться опыта, который в будущем будет очень востребован.
4. Список литературы
Класс sound и модуль pygame . mixer . music . [Электронный ресурс] URL : https://younglinux.info/pygame/mixer ( Дата обращения: 02.03.2022 )
Модуль threading на примерах. [Электронный ресурс] 10.09.2017 URL : http://python-3.ru/page/import-threading ( Дата обращения: 02.03.2022 )
ООП в картинках. [Электронный ресурс] 16.08.2019 URL : https://habr.com/ru/post/463125/ ( Дата обращения: 02.03.2022 )
Никита Прияцелюк. Создаём простое приложение с PyQt Designer : [Электронный ресурс] 30.03.2018 URL : https://tproger.ru/translations/python-gui-pyqt/ ( Дата обращения:02.03.2022 )
Python для начинающих. Модуль datetime : [Электронный ресурс] URL : https://pythonworld.ru/moduli/modul-datetime.html ( Дата обращения: 02.03.2022 )
Python для начинающих. Модуль sys : [Электронный ресурс] URL : https :// pythonworld . ru / moduli / modul — sys . html ( Дата обращения: 02.03.2022 )
