Во время тестирования QSound для одной из моих программ я столкнулся с проблемой, которую не могу понять.Всякий раз, когда я реализую объекты QSound внутри другого объекта, функция play () не может вызывать переменные-члены объекта QSound.
Вот примеры, которые я использовал для анализа проблемы:
- Пример с QSound в скрипте (работает как ожидается с 2 повторениями звука)
from PyQt5.Qt import QApplication
from PyQt5.QtMultimedia import QSound
import sys
app=QApplication(sys.argv)
SoundObject=QSound("./path/sound.wav")
SoundObject.play()
SoundObject.play("./path/sound.wav")
sys.exit(app.exec())
Пример QSound внутри другого объекта (только одно повторение звука)
from PyQt5.Qt import QApplication
from PyQt5.QtMultimedia import QSound
import sys
app=QApplication(sys.argv)
class SoundClass:
def __init__(self):
SoundObject = QSound("./path/sound.wav")
print(SoundObject.fileName()) # output= "./path/sound.wav"
SoundObject.play() # this doesn't do anything
SoundObject.play("./path/sound.wav")
SoundClass()
sys.exit(app.exec())
В обоих случаях я ожидаю, что звук воспроизводится 2 раза подряд.Однако, как только я использую объект QSound внутри другого объекта, похоже, что функция .play () игнорирует настройки моего объекта и вместо этого вызывает статическую функцию QSound.play ().Такое же поведение проявляется и для других переменных-членов объекта QSound (например, setLoops / loops).
При поиске ответа на мою проблему я обнаружил поток, посвященный той же проблеме с C ++ и Qt.Хотя кто-то упомянул, что QSound может быть устаревшим, однозначного ответа не было.(И мне интересно, почему через 4 года это все еще будет частью документации.)
Ссылка на тему: Вызов QSound :: play ("soundpath") работает, но объект QSound не работает.'t
Я использовал следующую документацию: https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtmultimedia/qsound.html?highlight=qsound#PyQt5.QtMultimedia.QSound
Мои характеристики:
- Windows 10.0.17134.706
- Python 3.7
- PyQt 5.12
Я что-то упустил или это просто ошибка?