Как сделать электронные часы в python

Обновлено: 07.07.2024

Всем привет! Сегодня я расскажу как создать аналоговые часы на Python 3.0 и вывести их с помощью tkinter.

Сначала разберем самое интересное. подключаем модули math (для вычислений) и time (для получения значений часов минут и секунд на вашем компьютере).
Подключаем графическую библиотеку tkinter и инициализируем окно:
Создаем холст размером 500 на 500 пикселей и размещаем его в окне


Теперь нарисуем просто круг - будущий циферблат

Теперь выведем надпись: Сделано на Python и точку - центр часов:
Теперь зададим счетчик цикла i и выведем рисочки секунд и часов
Выведем цифры:
Далее создаем бесконечный цикл, получаем значение текущего времени выводим стрелки бегущую строку и т.д. все понятно из коментариев в коде:
Файл скрипта можно скачать по ссылке и запускать на Python 3:

Секундная повернется на угол 360 °/60 = 6 °, т.к. вся окружность 360 ° и всего по ней распределены 60 секунд.

Минутная стрелка за это время повернется на 1/60 минуты т.е. расстояние от одной рисочки минут до другой разделится на 60 частей и каждую секунду минутная стрелка будет проходить одну часть которая рассчитывается так: (1/60) * (360 °/60) = 0,1 °.

Часы на циферблате располагаются через каждые 30 °. Расстояние (значение угла) от одного часа до следующего поделится на 3600 частей потомучто в часе 3600 секунд. Значит часовая стрелка за 1 секунду будет перемещаться на 1/3600 секунды или 1/60 минуты (т.к. один час равен 60 мин.) и расстояние между рисочками от одного часа до другого равно 5 рисочкам минут. Таким образом угол на который повернется часовая стрелка за секунду будет равен
30 ° /3600 = 0,0083(3).

Опираясь на рассуждения выше запишем формулы расчета углов поворота для каждой стрелки мы можем написать формулы для отсчета углов:


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

time_sec, time_min, time_hour - реальные значения времени соответственно секунд, минут и часов которое установлено на вашем компьютере.
Стрелки часов выходят из центра. Для отрисовки стрелок нужно создать линию один конец которой известен (условный центр - допустим x и y) , для определения координат второго конца потребуются тригонометрические формулы. Координаты любой стрелки могут быть описаны следующим образом
начало - (x, y), конец - (x - x1 * cos(angle * П/180 + П/2), y - y1 * sin (angle * П/180 + П/2) ).
Вместо angle подставляем sec_angle если стрелка секундная и т.д. Умножение на П/180 нужно для того чтобы перевести градусы в радианы, + П/2 нужно для того чтобы начало отсчета было от 12 часов.
Формулы для всех стрелок будут выглядеть так:

Прохожу курс на курсере. Не принимают задачу .
Дано число N. С начала суток прошло N минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент.

Вводится число N — целое, положительное, не превышает 10⁷.

Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59).

Учтите, что число N может быть больше, чем количество минут в сутках.


Выдает такую ошибку : Precompile check failed:
/solution//solution.py:22:1: W391 blank line at end of file

Ну так уберите эту пустую строку в конце файла

Похоже, код проверяется по рекомендациям PEP 8. Там много интересных требований. В частности, файл должен заканчиваться ровно одним переводом строки

Хотя, в текущей версии PEP 8 этого, похоже, уже нет. Но проверяющая программа этого не знает )

Ну так уберите эту пустую строку в конце файла

Похоже, код проверяется по рекомендациям PEP 8. Там много интересных требований. В частности, файл должен заканчиваться ровно одним переводом строки

TosterModerator

Вопрос слишком общий. Исправьте его так, чтобы он описывал конкретную проблему с достаточной детализацией для определения адекватного ответа.

TosterModerator

Afafks, не ок. Всё ещё не понятно с чем конкретно у вас проблема. Всё ещё невозможно дать конкретный и единственно верный ответ. Всё ещё очень похоже на задание, а не вопрос.


Python содержит несколько инструментов, которые разработчик может использовать для работы с датой и временем. В данном разделе статье мы рассмотрим модули datetime и time. Мы изучим принципы их работы и способы их применения. Начнем с модуля datetime.

Модуль datetime

Мы изучим следующие классы модуля:

  • datetime.date
  • datetime.timedelta
  • datetime.datetime

Благодаря этим классам мы в будущем сможем работать с большей частью случаев, в которых нам понадобятся объекты date и datetime. Также существует класс tzinfo, который применяется для работы с часовыми поясами. Для дополнительной информации об этом классе вы можете обратиться к документации Python.

datetime.date

Python может представлять даты различными способами. Для начала, рассмотрим формат datetime.date, так как это один из самых простых объектов date.

В данном коде показано, как создать простой объект даты. Класс date принимает три аргумента: год, месяц и день. Если вы укажите неправильное значение, вы увидите ошибку ValueError, как в случае выше. В противном случае вы увидите, что объект datetime.date вернулся. Давайте взглянем на еще один пример:

Здесь мы присваиваем объекту date переменную d. Теперь мы можем получить доступ к различным компонентам даты по названиям, таким как d.year или d.month. Давайте посмотрим, какой сейчас день:

Это может быть полезно, когда вам нужно записать, какой сейчас день. Или, если вам нужно выполнить основанный на сегодняшней дате расчет. Мелочь, а приятно.

datetime.datetime

Объект datetime.datetime содержит всю информацию объектов datetime.date плюс datetime.time. Давайте приведем несколько примеров, для лучшего понимания разницы между этим объектом, и объектом datetime.date.

Мы видим, что datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда. Это также позволяет вам указывать информацию о микросекундах и часовом поясе. При работе с базами данных, данные типы объектов будут использоваться достаточно часто. Большую часть вашей работы, вам нужно будет конвертировать форматы date или datetime Python в форматы SQL datetime или timestamp. Обратите внимание на то, что today совместно с datetime.datetime использует два разных метода:

Модуль datetime содержит другой метод, под названием strftime. Этот метод позволяет разработчику создавать строку, отображающую время в более понятной для человека форме. Существует целая таблица параметров форматирования, с которой рекомендуется ознакомиться в документации Python, в секции 8.1.7. Давайте взглянем на несколько примеров, показывающих всю полезность данного метода:

Первый пример – это скорее хитрость. В нем показано, как конвертировать сегодняшний объект datetime в строку, следующую за форматом YYYYMMDD (ГГГГММДД). Второй пример более наглядный.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

В нем мы присваиваем объект datetime переменной под названием today и применяем два разных параметра форматирования строки. Первый параметр добавляет косые черточки между элементами datetime, а также перегруппировывает datetime, теперь он делится на месяц, день и год. В последнем примере мы создаем временную отметку, которая следует типичному формату: YYYY-MM-DD.HH.MM.SS. Если вам нужно указать год как двухзначный (“YY”), вы можете заменить %Y на %y.

datetime.timedelta

Объект datetime.timedelta отображает длительность времени. Другими словами, это разница между двумя датами или временными отметками. Давайте взглянем на наглядный пример:

Мы создали два объекта datetime. Один указывает на сегодняшний день, второй – на прошедшую неделю. После этого, мы берем разницу между ними. Это возвращает объект timedelta, который мы можем далее использовать, чтобы выяснить, сколько прошло дней или секунд, между этими двумя датами. Если вам нужно узнать количество часов или минут между двумя датами, вам понадобится немножко математики, чтобы выяснить это. Давайте взглянем на проверенный способ:

Отсюда мы узнаем, что в неделе 186 часов и 13 минут. Обратите внимание на то, что мы используем двойную косую черту в качестве нашего оператора деления, также известного как floor division. Теперь мы готовы к тому, чтобы узнать больше о модуле time Python.

Модуль time

time . struct_time ( tm_year = 1970 , tm_mon = 1 , tm_mday = 1 , tm_hour = 0 , tm_min = 0 , tm_sec = \

Я запустил его на Windows 7, которая также уверена в том, что начало времен датируется 1970м годом. В любом случае, в данном разделе мы ознакомимся со следующими функциями:

Читайте также: