我正在尝试创建两个按钮,可以播放一个声音一次又一次。但在这个阶段,它是不可能重现的声音在所有。我做错了什么?
import sys
from PyQt6.QtCore import QUrl
from PyQt6.QtMultimedia import QMediaPlayer, QAudioOutput
from PyQt6.QtWidgets import QWidget, QPushButton, QVBoxLayout, QApplication
class SoundPlayer(QWidget):
def __init__(self):
super().__init__()
filename = "sound.mp3"
self.player = QMediaPlayer()
self.audio_output = QAudioOutput()
self.player.setAudioOutput(self.audio_output)
self.player.setSource(QUrl.fromLocalFile(filename))
self.audio_output.setVolume(50)
# player.play()
self.play_button = QPushButton('Play')
self.play_endlessly_button = QPushButton('Play Endlessly')
layout = QVBoxLayout()
layout.addWidget(self.play_button)
layout.addWidget(self.play_endlessly_button)
self.setLayout(layout)
self.play_button.clicked.connect(self.play_once)
self.play_endlessly_button.clicked.connect(self.play_endlessly)
def play_once(self):
self.player.play()
def play_endlessly(self):
self.player.setLoops(QMediaPlayer.Loops.Infinite)
self.player.play()
if __name__ == '__main__':
app = QApplication([])
widget = SoundPlayer()
widget.show()
sys.exit(app.exec())
尝试使用QMediaPlayer类的“play()”方法。需要在按下按钮时,根据按钮无休止地播放一次声音。
1条答案
按热度按时间mrwjdhj31#
您使用的是相对路径“sound.mp3”,相对路径是从当前工作目录解析的,该目录并不总是等于源代码目录,可以是任何目录。
验证是否可以执行
以及
要解决这个问题,您可以使用源目录作为基础来构建绝对路径