Как реализовать воспроизведение аудио в 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", "Звук"))