1

因此,我正在尝试创建一个 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())
4

0 回答 0