因此,我正在尝试创建一个 GUI,在字典中搜索单词,返回条目和建议并下载音频,返回具有音频的“相关单词”(有时不止一个)。然后,用户根据方言单击三个按钮之一来播放音频。我可以播放单词,但我无法关闭最后播放的单词,因此我可以下载另一个。
以下是相关代码:
@staticmethod
def munster():
""" This method plays the Munster recording, if it exists"""
url = QtCore.QUrl.fromLocalFile("./CanM.mp3")
content = QtMultimedia.QMediaContent(url)
player = QtMultimedia.QMediaPlayer()
player.setMedia(content)
player.play()
player.stateChanged(app.quit)
当它到达最后一行时,它给了我这个错误:
TypeError:本机 Qt 信号不可调用
有没有办法关闭播放器以允许下载另一个同名的音频文件?
作为记录,我在带有 Windows 81 的 Python 3.4 上使用最新版本的 PyQt5 和 Qt5.4。但是,我也在 Archlinux 系统上处理这个项目(使用相同的 Qt 和 PyQt),并希望它易于携带。
编辑:很简单,一旦我开始查看 Player 类中包含的所有内容。只需要使用断开连接的方法。
Edit2:编辑显示完整的工作代码
@staticmethod
def play_audio(dialect):
file_names = {'Munster': './CanM.mp3', 'Connacht': './CanC.mp3', 'Ulster': './CanU.mp3'}
url = QtCore.QUrl.fromLocalFile(os.path.abspath(file_names[dialect]))
content = QtMultimedia.QMediaContent(url)
player = QtMultimedia.QMediaPlayer()
player.setMedia(content)
player.play()
player.stateChanged.connect(lambda: player.disconnect())