#python #pyqt6
Вопрос:
Поскольку модуль PyQt6 был выпущен, я начал переносить свой код с PyQt5 на PyQt6.
В PyQt был модуль под названием phonon, который использовался для воспроизведения звуков.
В PyQt5 был модуль под названием QMediaPlayer, который затем использовался для воспроизведения звуков.
Теперь, как воспроизвести звук в PyQt6?
Был веб-сайт, на котором говорилось, что QMediaPlayer еще не портирован и будет выполнен в версии PyQt6 PyQt6.2.
Веб — сайт вот такой- https://www.pythonguis.com/faq/pyqt-pyside6-missing-modules/
На веб-сайте также говорится, что PyQt6.2 будет выпущен в сентябре 2021 года.
Переименован ли импорт?
Комментарии:
1. Согласно документации Qt , вы должны попробовать использовать
QSoundEffect
. Но поскольку у меня еще нет PyQt6, я не могу подтвердить, работает ли он.2. Почему у вас нет PyQt6? PyQt6 доступен на pypi. Более того, основная QtMultimedia удалена в PyQt6
3. Что значит » почему «? Нет, он не удален. Я буквально только что перешел по ссылке на страницу документации. PyQt6.2 просто еще не выпущен.
4. @mapf Вы говорите: Я думаю, PyQt6.2 выйдет не раньше следующего года . откуда ты это взял? Релизы PyQt и PySide, как правило, выходят менее чем через неделю после выпуска Qt.
5. @eyllanesc Я сравнивал даты выпуска с предыдущими версиями, но я просто понял, что посмотрел не на те даты. Так что это может занять всего несколько дней.
Ответ №1:
Следует отметить, что:
- В Qt6, если вы хотите воспроизвести музыкальный файл, у вас есть 2 варианта:
- Эффект QSound
import sys from PyQt6.QtCore import QUrl from PyQt6.QtGui import QGuiApplication from PyQt6.QtMultimedia import QSoundEffect def main(): app = QGuiApplication(sys.argv) filename = "sound.wav" effect = QSoundEffect() effect.setSource(QUrl.fromLocalFile(filename)) # possible bug: QSoundEffect::Infinite cannot be used in setLoopCount effect.setLoopCount(-2) effect.play() sys.exit(app.exec()) if __name__ == "__main__": main()
- QMediaPlayer.
import sys from PyQt6.QtCore import QUrl from PyQt6.QtGui import QGuiApplication from PyQt6.QtMultimedia import QAudioOutput, QMediaPlayer def main(): app = QGuiApplication(sys.argv) filename = "sound.mp3" player = QMediaPlayer() audio_output = QAudioOutput() player.setAudioOutput(audio_output) player.setSource(QUrl.fromLocalFile(filename)) audio_output.setVolume(50) player.play() sys.exit(app.exec()) if __name__ == "__main__": main()
- Эффект QSound
- Предыдущие классы доступны начиная с Qt 6.2, и на данный момент в pypi нет выпуска PyQt6 6.2.0, но вы можете установить его из репозиториев сервера PyPI Riverbank Computing (подробнее см. Здесь).:
python -m pip install --index-url https://riverbankcomputing.com/pypi/simple/ --pre --upgrade PyQt6
Вероятно, через несколько дней он уже будет доступен в pypi