Перейти к содержимому

Как сделать звук в python tkinter

  • автор:

Класс Sound и модуль pygame.mixer.music

В Pygame для работы с аудио предназначены модули pygame.mixer и pygame.mixer.music. Модули похожи, однако pygame.mixer в первую очередь адаптирован для добавления и настройки звуковых эффектов в игре. В то время как pygame.mixer.music – для добавления фоновой музыки.

Функция pygame.mixer.music.load() загружает потоковое аудио, т. е. не грузит файл целиком, а делает это отдельными порциями. В результате можно проигрывать только один файл за раз. Однако можно ставить файлы в очередь функцией queue() . Поддерживает в том числе формат mp3 (но не в Ubuntu).

С другой стороны, в pygame.mixer ключевым является класс Sound . Он позволяет загружать, проигрывать и выполнять ряд других действий с файлами форматов wav или ogg. При создании экземпляра Sound в конструктор передается имя файла.

В примере ниже подгружается фоновая музыка: pygame.mixer.music.load() . Функция не возвращает никакого «музыкального» объекта, поэтому результат ее вызова не присваивается переменной.

С помощью функции music.play() файл начинает проигрываться. Если требуется зациклить композицию, то в play() передается число -1. Положительный аргумент указывает на количество повторов + одно дополнительное. То есть, если надо проиграть композицию 2 раза, то в функцию передается число 1.

В программе при нажатии на клавишу 1 клавиатуры музыка ставится на паузу: music.pause() . Клавиша 2 уменьшает громкость в два раза: music.set_volum(0.5) . Нажатие 3 возвращает громкость на прежний уровень. Функция unpause() вызывается на случай, если до этого музыка была выключена (клавишей 1).

В примере создаются два объекта типа Sound . У них есть свой метод play() . В данном случае файлы проигрываются при клике левой и правой кнопками мыши. Объекты Sound могут проигрываться одновременно, так как обычно принадлежат разным каналам. Если требуется более тонкое управление звуками, дополнительно используют класс Channel .

import pygame as pg import sys pg.init() sc = pg.display.set_mode((400, 300)) pg.mixer.music.load('Beethoven.ogg') pg.mixer.music.play() sound1 = pg.mixer.Sound('boom.wav') sound2 = pg.mixer.Sound('one.ogg') while 1: for i in pg.event.get(): if i.type == pg.QUIT: sys.exit() elif i.type == pg.KEYUP: if i.key == pg.K_1: pg.mixer.music.pause() # pygame.mixer.music.stop() elif i.key == pg.K_2: pg.mixer.music.unpause() # pygame.mixer.music.play() pg.mixer.music.set_volume(0.5) elif i.key == pg.K_3: pg.mixer.music.unpause() # pygame.mixer.music.play() pg.mixer.music.set_volume(1) elif i.type == pg.MOUSEBUTTONUP: if i.button == 1: sound1.play() elif i.button == 3: sound2.play() pg.time.delay(20)

Если закомментировать вызовы функций pause() и unpause() и раскомментировать stop() и play() , то результат будет схож. Разница в том, что при использовании комбинации stop-play файл начнет проигрываться сначала, а при pause-unpause продолжится с места останова.

Если у вас нет файлов wav или ogg для тестов, можете найти немного в каталоге data модуля pygame.examples . Модуль находится в папке библиотеки pygame, адрес которой можно посмотреть так:

>>> import pygame >>> pygame.__file__ '/home/. /pygame/__init__.py'

Практическая работа

Добавьте фоновую музыку и звук столкновения в игру из практической работы предыдущего урока.

Окно игры должно закрываться только после того, как звук столкновения полностью проиграется. В зависимости от решения вам может понадобиться метод get_length() объекта типа Sound . Метод возвращает продолжительность звука, выраженную в секундах (тип float ).

Курс с примерами решений практических работ:
pdf-версия

X Скрыть Наверх

Pygame. Введение в разработку игр на Python

Звуки в Python (tkinter)

Я делаю игру на Python с помощью библиотеки tkinter. Я хочу добавить в программу музыку на заднем фоне, и чтобы другой звук работал при нажатие на кнопку. Какие библиотеки для этого есть? И как это можно реализовать?

Отслеживать
задан 23 апр 2020 в 10:17
117 2 2 серебряных знака 10 10 бронзовых знаков

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

from playsound import playsound playsound('ПУТЬ К ФАЙЛУ.mp3') 

Но пока этот код выполняется пользователь не может нажимать на другие кнопки

Отслеживать
ответ дан 24 апр 2020 в 3:29
Ahmed Ayman 123 Ahmed Ayman 123
141 13 13 бронзовых знаков

Автор вопроса четко указал, что нужны нажатия на другие кнопки, пока играет музыка. Не является ответом

24 апр 2020 в 7:31
@Alex_Skvortsov, неправильный ответ — тоже ответ. Хотя и неправильный.
12 мая 2020 в 11:03

Используя прошлый ответ, можно сделать так:

Музыка запускается через функцию, функция открывается в отдельном потоке:

from threading import Thread from playsound import playsound def music():playsound('ПУТЬ К ФАЙЛУ.mp3')#функция которая будет играть музыка Thread(target = music, daemon=True).start()#запускается функция в отдельном потоке 

Воспроизведение аудио в tkinter python?

Делаю свой плеер на python, используя tkinter и ещё много библиотек.
Но вот в чём проблема:
Как воспроизводить звук так, чтобы окно tkinter не зависало?
Пробовал playsound, pyglet, но ничего не вышло.

  • Вопрос задан более трёх лет назад
  • 550 просмотров

Комментировать
Решения вопроса 1
When you dont want to litter on stackoverflow @Andriy_Kosmenyuk

Попробуй PyGame, у меня при использовании PyQT + PyGame проблем не было, думаю с tkinter тоже не будет.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 1
MechanicZelenyy @MechanicZelenyy

Не блокировать поток в котором работает окно, для этого другие задачи надо запускать в других потоках.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +3 ещё

Как сделать так, чтобы при регистрации пользователя в телеграмм боте его ID сохранялся в файле только один раз?

  • 2 подписчика
  • 42 минуты назад
  • 25 просмотров

Создание аудиофайла из текста с помощью Python-Tkinter

windows звук из текста

windows звук из текста

Привет всем! В рамках разбирательства с библиотекой Tkinter опираясь на библиотеку gTTS (о ней я рассказывал ранее) накропал примитивную программку, которая позволяет из файла с расширением .txt в кодировке utf-8 получить аудиофайл в формате .mp3

Озвучка получается так себе — в основе, повторюсь, лежит библиотека от Google, которая, на мой взгляд, по качеству голоса порядком проигрывает Алисе от Yandex, но в качестве эксперимента — вроде нормально ��

windows звук из текста

Интерфейс максимально прост — одна единственная кнопка, которая отвечает за выбор текстового файла. Как только файл выбран — начинается конвертация из текста в звук. Собственно — вот скрин программы:

Из выявленных минусов сразу вижу — отсутствие некой динамики — непонятно, когда идет конвертация из текста в звук — как долго она еще будет идти и прочее. Ну и внешний вид — очень даже хромает �� Но как для первого раза — вроде норм. А что вы скажете? И да — для экспериментов программа доступна по ссылке.

Спасибо за внимание!
В случае возникновения вопросов — пишите на почту или в Telegram.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *