Как сделать звук в python tkinter
Перейти к содержимому

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

  • автор:

Звуки в 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()#запускается функция в отдельном потоке 

Класс 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

Звук и музыка

Author24 — интернет-сервис помощи студентам

Музыка и звук клика
Всем привет.Помогите пожалуйста с кодом для Delphi.У меня есть музыка и звук клика.Я хочу чтобы.

Звук уведомлений есть а музыка не играет
нужна помошь планшет DNS p102g звук уведомлений есть а музыка не играет.когда воспроизводится видео.

вроди звук есть и музыка играет , но на всех видео и играх не работает
привет всем поамагите у меня такая проблема! : вроди звук есть и музыка играет , но на всех видео и.

Skype глушит мой микрофон, если у меня громкий звук в игре/музыка и т.п
Здравствуйте, прошу помощи, ибо облазил всё, аналогичной проблемы в течении двух дней поиска — не.

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

1287 / 672 / 365
Регистрация: 07.01.2019
Сообщений: 2,241

Лучший ответ

Сообщение было отмечено Hyppoprogramm как решение

Решение

winsound.PlaySound('song.wav', winsound.SND_ALIAS | winsound.SND_ASYNC)

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

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

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

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

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

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

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

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

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

python

  • Python
  • +2 ещё

Disnake | Python | Реализация "Формы" как это сделать?

  • 1 подписчик
  • 13 минут назад
  • 17 просмотров

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

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