Введение
В ходе данной статьи напишем код приложения «Таймер» с графическим интерфейсом на языке программирования Python с использованием библиотеки tkinter. Таймер будет отображать количество оставшихся секунд и воспроизводить звуковой сигнал по истечении указанного времени.
Установка и импорт необходимых библиотек
Перед написанием кода необходимо установить библиотеку pygame. Для этого можно перейти в терминал/командную строку, прописать pip install pygame, нажать Enter и ждать установки.
После инсталляции библиотеки pygame импортируем все необходимые библиотеки:
import time
from tkinter import *
import pygame
- Модуль time будет использоваться для задержек
- Библиотека tkinter будет использоваться для создания графического интерфейса
- Библиотека pygame будет использоваться воспроизведения звукового сигнала.
Инициализация Pygame
Инициализируем библиотеку pygame и загрузим аудиофайл, который будет воспроизводиться по истечении времени (в переменную file передаём путь до аудиофайла):
import time
from tkinter import *
import pygame
file = 'audio.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
Создание графического интерфейса
Создадим главное окно программы. Установим заголовок и размеры окна, а также отключим возможность изменения его размеров:
import time
from tkinter import *
import pygame
file = 'audio.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(False, False)
Создадим виджет Label, на котором будет отображать количество оставшихся секунд:
import time
from tkinter import *
import pygame
file = 'audio.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(False, False)
count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()
Добавим виджет Entry (поле ввода), в котором пользователь сможет указать время (в секундах) для таймера:
import time
from tkinter import *
import pygame
file = 'audio.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(False, False)
count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()
seconds = Entry(root, font='Arial 15 bold', width=7)
seconds.pack(pady=10)
Создадим кнопку btn_start, которая будет вызывать функцию start() (её создадим чуть позже) при нажатии:
import time
from tkinter import *
import pygame
file = 'audio.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(False, False)
count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()
seconds = Entry(root, font='Arial 15 bold', width=7)
seconds.pack(pady=10)
btn_start = Button(root, text='Старт', font='Arial 15 bold', command=start)
btn_start.pack()
Создадим кнопку btn_stop, которая будет вызывать функцию stop() при нажатии. Но пока скроем ее с помощью метода pack_forget(). Также запустим главный цикл программы с помощью метода mainloop():
import time
from tkinter import *
import pygame
file = 'audio.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(False, False)
count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()
seconds = Entry(root, font='Arial 15 bold', width=7)
seconds.pack(pady=10)
btn_start = Button(root, text='Старт', font='Arial 15 bold', command=start)
btn_start.pack()
btn_stop = Button(root, text='Выключить', font='Arial 15 bold', command=stop)
root.mainloop()
Определение функций
Функция start()
Пришло время для создания функций, и начнём с функции start(). Она будет вызываться при нажатии кнопки «Старт». Внутри неё в переменную duration сохраним количество секунд введённое пользователем:
def start():
duration = int(seconds.get())
Далее будет идти цикл while, который будет выполняться в течение указанного количества секунд. Внутри цикла, в переменную m сохраним количество минут, а количество секунд в переменную s:
def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
Затем отформатируем время в виде минут и секунд и сохраним его в переменную min_sec_forma:
def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
min_sec_format = '{:02d}:{:02d}'.format(m, s)
Далее заменим текст в count_digit на данные из min_sec_format, а также обновим текст в лейбле count_digit, добавим засыпание на одну секунду и вычтем секунду из переменной duration:
def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
min_sec_format = '{:02d}:{:02d}'.format(m, s)
count_digit['text'] = min_sec_format
count_digit.update()
time.sleep(1)
duration -= 1
После цикла вызовем функцию sound(), которую мы сейчас создадим:
def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
min_sec_format = '{:02d}:{:02d}'.format(m, s)
count_digit['text'] = min_sec_format
count_digit.update()
time.sleep(1)
duration -= 1
sound()
Функция sound()
Теперь создадим функцию sound(), которая будет вызываться при истечении указанного времени. Она скроет кнопку «Старт», покажет кнопку «Выключить» и воспроизведет звуковой сигнал:
def sound():
btn_start.pack_forget()
btn_stop.pack()
pygame.mixer.music.play()
Функция stop()
Осталось создать последнюю функцию, а именно stop().Она будет вызываться при нажатии кнопки «Выключить» и скроет кнопку «Выключить», приостановив воспроизведение звукового сигнала:
def stop():
btn_start.pack()
btn_stop.pack_forget()
pygame.mixer.music.stop()
Добавление функций в основной код
Добавим функции в основной код:
import time
from tkinter import *
import pygame
def start():
duration = int(seconds.get())
while duration:
m, s = divmod(int(duration), 60)
min_sec_format = '{:02d}:{:02d}'.format(m, s)
count_digit['text'] = min_sec_format
count_digit.update()
time.sleep(1)
duration -= 1
sound()
def sound():
btn_start.pack_forget()
btn_stop.pack()
pygame.mixer.music.play()
def stop():
btn_start.pack()
btn_stop.pack_forget()
pygame.mixer.music.stop()
file = 'audio.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
root = Tk()
root.title('Таймер')
root.geometry('150x150')
root.resizable(False, False)
count_digit = Label(root, text='0', font='Arial 15 bold')
count_digit.pack()
seconds = Entry(root, font='Arial 15 bold', width=7)
seconds.pack(pady=10)
btn_start = Button(root, text='Старт', font='Arial 15 bold', command=start)
btn_start.pack()
btn_stop = Button(root, text='Выключить', font='Arial 15 bold', command=stop)
root.mainloop()
Видеоурок
Заключение
В ходе статьи мы с Вами написали код приложения «Таймер» с графическим интерфейсом на языке программирования Python с использованием библиотеки tkinter. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂