Как реализовать воспроизведение аудио в PyQt5 с низкоуровневыми функциями?

Я хотел сделать воспроизведение звука в PyQt5 при нажатии на кнопку, но получалась задержка. Я использовал этот код:

self.player = QMediaPlayer()
url = QUrl.fromLocalFile('minecraft_click.mp3')
media = QMediaContent(url)  # Преобразуем QUrl в QMediaContent
self.player.setMedia(media)
self.player.setNotifyInterval(100)
self.player.setVolume(100)

Нужно чтобы задержки не было и звук воспроизводился автоматически. Вот реализация проекта:

from MainWindow import Ui_MainWindow
from PyQt5 import QtWidgets, QtCore


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent=parent)

        self.setupUi(self)
    
    self.button.clicked.connect(self.onClicked)


    def onClicked(self):
    # тут должен воспроизвестись звук без задержки
    pass


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()

    sys.exit(app.exec_())

ИЗМЕНЕНО. Файл Main.py:

from PyQt5.QtCore import QUrl
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtWidgets import QApplication
from MainWindow import Ui_MainWindow
from PyQt5 import QtWidgets, QtCore


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent=parent)

        self.setupUi(self)

        self.player = QMediaPlayer()
        url = QUrl.fromLocalFile('minecraft_click.mp3')
        media = QMediaContent(url)  # Преобразуем QUrl в QMediaContent
        self.player.setMedia(media)
        self.player.setNotifyInterval(100)
        self.player.setVolume(100)
        self.button.clicked.connect(self.onClicked)

    def onClicked(self):
        self.player.play()


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()

    sys.exit(app.exec_())

Файл MainWindow.py:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(363, 365)
        MainWindow.setMinimumSize(QtCore.QSize(100, 100))
        MainWindow.setMaximumSize(QtCore.QSize(680, 528))
        font = QtGui.QFont()
        font.setKerning(True)
        MainWindow.setFont(font)
        MainWindow.setStyleSheet("QWidget {\n"
"    background-color: rgb(0, 170, 255);\n"
"}\n"
"\n"
"QPushButton {\n"
"    background-color: rgba(76,27,220,0.693);\n"
"    border: 3px solid rgb(82, 36, 181);\n"
"    border-radius: 10px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"background-color: rgba(76,27,220,0.603);\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
"    background-color: rgb(85, 0, 255);\n"
"}\n"
"")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.button = QtWidgets.QPushButton(self.centralwidget)
        self.button.setGeometry(QtCore.QRect(90, 170, 161, 41))
        self.button.setObjectName("button")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Launcher"))
        self.button.setText(_translate("MainWindow", "Звук"))

Ответы (0 шт):