そのため、辞書で単語を検索し、エントリと提案を返し、音声をダウンロードして、音声のある「関連単語」(場合によっては複数) を返す GUI を作成しようとしています。次に、ユーザーは 3 つのボタンのいずれかをクリックして、方言に基づいてオーディオを再生します。再生する単語を取得できますが、最後に再生した単語を閉じることができないため、別の単語をダウンロードできます。
関連するコードは次のとおりです。
@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 シグナルは呼び出し可能ではありません
プレーヤーを閉じて、同じ名前の別のオーディオ ファイルをダウンロードできるようにする方法はありますか?
記録のために、私は PyQt5 の最新リリースと Windows 81 の Python 3.4 で 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())