###pyqt5でボタンを押した時に音が出るようにしたい
python3.5を使っています。pyqt5でボタンを押すと音が出るようなコードを書きたいです。
###発生している問題・エラーメッセージ
ボタンを押しても音が出ません。エラーは特に表示されてないです。
###該当のソースコード
python3
1import sys 2from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication 3from PyQt5 import QtCore, QtWidgets, QtMultimedia, QtGui 4 5 6 7player = QtMultimedia.QMediaPlayer() 8sound = QtMultimedia.QMediaContent(QtCore.QUrl.fromLocalFile("sound.wav")) 9player.setMedia(sound) 10player.setVolume(100) 11 12 13class Example(QMainWindow): 14 15 def __init__(self): 16 super().__init__() 17 18 self.initUI() 19 20 21 def initUI(self): 22 23 btn1 = QPushButton("Button 1", self) 24 btn1.move(75, 50) 25 26 # クリックされたらbuttonClickedの呼び出し 27 btn1.clicked.connect(self.buttonClicked) 28 29 self.setGeometry(300, 300, 290, 150) 30 self.setWindowTitle('Event sender') 31 self.show() 32 33 34 def buttonClicked(self): 35 player.play() 36 37 38if __name__ == '__main__': 39 40 app = QApplication(sys.argv) 41 ex = Example() 42 sys.exit(app.exec_()) 43
###試したこと
音を出すコードとして、次の様なコードを書きました
from PyQt5 import QtCore, QtWidgets, QtMultimedia, QtGui import sys app = QtGui.QGuiApplication(sys.argv) player = QtMultimedia.QMediaPlayer() sound = QtMultimedia.QMediaContent(QtCore.QUrl.fromLocalFile("sound.wav")) player.setMedia(sound) player.setVolume(100) player.play() sys.exit(app.exec_())
これ正常に動きました。次に、ボタンを押した時にコマンドを出すコードとして、次のようなコードがあったので、それを参考にしました。これは、クリック時にステータスバーの表示を変化させるコードです。
import sys from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): btn1 = QPushButton("Button 1", self) btn1.move(30, 50) btn2 = QPushButton("Button 2", self) btn2.move(150, 50) # クリックされたらbuttonClickedの呼び出し btn1.clicked.connect(self.buttonClicked) btn2.clicked.connect(self.buttonClicked) self.statusBar() self.setGeometry(300, 300, 290, 150) self.setWindowTitle('Event sender') self.show() def buttonClicked(self): # ステータスバーへメッセージの表示 sender = self.sender() self.statusBar().showMessage(sender.text() + ' was pressed') if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
これも正常に動きました。そこで、この二つのコードを参考に該当のコードを書いてみましたが、ボタンは表示されましたが、押しても何も起きませんでした。特にエラーは出ていません。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。