Эй, чуваки! Устали проваливать сроки и забывать о важных делах из-за своей жуткой зависимости от видеоигр? Не беспокойтесь, я сделал для вас нечто круто-крутое! Представляю вам мой простой GUI будильник, который поможет вам следить за временем на компьютере. Забудьте о днях напролет, проведенных в мире виртуальных приключений – этот скрипт станет вашим надежным напарником в борьбе с прокрастинацией. Теперь вы сможете распределять задачи и контролировать свое время как настоящий программист-профи. Больше никаких промахов и запаздываний, только дисциплина и продуктивность! Скачивайте мой будильник прямо сейчас и начните свой путь к успеху в реальном мире. Время – деньги, геймеры!
import tkinter as tk
from datetime import datetime, timedelta
'''
импортирует классы `datetime` и `timedelta`
из модуля `datetime`, чтобы работать с датой и временем.
'''
import time
'''
импортирует модуль `time` для работы с функциями времени.
'''
import threading
'''
импортирует модуль `threading` для многопоточности.
'''
from pygame import mixer
'''
импортирует модуль `mixer` из библиотеки `pygame` для воспроизведения звука.
'''
import re
'''
импортирует модуль `re` для работы с регулярными выражениями.
'''
def countdown(count):
'''
объявляет функцию с именем `countdown`,
которая будет отсчитывать время.
'''
# Изменение текста в label
label['text'] = str(timedelta(seconds=count))
'''
устанавливает текст в элементе интерфейса `label`
в формате времени, используя значение `count` в секундах.
'''
if count > 0:
'''
проверяет, больше ли значение `count` нуля.
'''
# Вызываем функцию countdown каждую секунду
root.after(1000, countdown, count-1)
'''
вызывает функцию `countdown` с аргументом `count-1`
через 1000 миллисекунд (1 секунду), если `count` больше нуля.
'''
else:
# Время вышло, играем музыку
mixer.init()
'''
инициализирует модуль `mixer` для воспроизведения звука.
'''
mixer.music.load('1.mp3')
'''
загружает звуковой файл '1.mp3' для воспроизведения.
'''
mixer.music.play()
'''
запускает воспроизведение звука
'''
def start_timer():
'''
это объявление функции с именем `start_timer`,
которая будет запускать таймер.
'''
time_input = entry.get()
'''
сохраняет введенное пользователем время
в переменную `time_input`.
'''
try:
'''
начало блока, в котором будут обрабатываться исключения.
'''
match = re.match(r'(\d+):(\d+)', time_input)
'''
использует регулярное выражение для поиска времени
в формате "часы:минуты"
во введенной пользователем строке.
Результат будет сохранен в переменной `match`.
'''
if match:
'''
проверяет, успешно ли было найдено время в формате "часы:минуты".
'''
hours = int(match.group(1))
'''
извлекает часы из найденного времени
и преобразует их в целое число,
сохраняя результат в переменную `hours`.
'''
minutes = int(match.group(2))
'''
извлекает минуты из найденного времени и преобразует их
в целое число, сохраняя результат в переменную `minutes`.
'''
seconds = hours * 3600 + minutes * 60
'''
вычисляет общее количество секунд
на основе введенного времени в часах и минутах,
сохраняя результат в переменную `seconds`.
'''
t = threading.Thread(target=countdown, args=(seconds,))
'''
создает новый поток `t`, который будет вызывать функцию `countdown` с аргументом `seconds`.
'''
t.start()
'''
запускает созданный поток `t`.
'''
else:
label['text'] = 'Неправильный формат. Введите время в формате ЧЧ:ММ'
except ValueError:
label['text'] = 'Неправильный формат. Введите время в формате ЧЧ:ММ'
# Создаем основное окно
root = tk.Tk()
root.title('Будильник на Tkinter')
# Поле для ввода времени
entry = tk.Entry(root, justify='center')
entry.insert(0, '0:15')
entry.pack(pady=20)
# Кнопка запуска таймера
start_button = tk.Button(root, text='Старт', command=start_timer)
start_button.pack()
# Место для показа оставшегося времени
label = tk.Label(root, text='', font=('Helvetica', 48))
label.pack()
# Запускаем главный цикл
root.mainloop()