質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2689閲覧

ボタンやマウスをクリックしている間だけ音を鳴らす仕組みを作りたい。

OKA-G

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2020/07/18 11:01

mousePressEventを使えばできそうな気はしてるのですが、やり方がわかりません。

ボタンかマウスをクリックしている間はシグナルを出し続けてシグナルで出ている間は波形を再生し続けるようなイメージです。

どのような方法が考えられますか?

音を鳴らすための波形はNumpyやScipyでも生成できます。

皆さんの知恵をお貸しください。

import sys from PySide2 import QtWidgets, QtCore from PySide2.QtCore import Qt import winsound as ws # Window class Test(QtWidgets.QDialog): def __init__(self, parent=None): super(Test, self).__init__(parent) self.setWindowFlags(QtCore.Qt.Dialog|QtCore.Qt.WindowCloseButtonHint) self.UI() def UI(self): button = QtWidgets.QPushButton() button.setFixedSize(120, 120) layout = QtWidgets.QHBoxLayout(self) layout.addWidget(button) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) T = Test() T.show() sys.exit(app.exec_())
teamikl👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ボタンのイベント処理について

ボタンかマウスをクリックしている間はシグナルを出し続けてシグナルで出ている間は波形を再生し続けるようなイメージです。

シグナル pressed, released で開始・停止するようにします。

python

1 def startSound(self): 2 print("Start") 3 4 def stopSound(self): 5 print("Stop") 6 7 def UI(self): 8 # 省略 9 10 button.pressed.connect(self.startSound) 11 button.released.connect(self.stopSound)

音声の再生について

winsound を import してるので、PlaySoundを想定しますが、注意点としては
「再生」をする際に、ブロッキングが発生するとGUIのウィンドウが固まってしまう為、
非同期のオプション (SND_ASYNC) を付けて再生する必要があります。

波形データの再生について

波形が予め生成済みのモノか、リアルタイムに生成されるものかにより対応が変わってきます。
継続的に生成される波形データを再生するには、更にスレッドが必要になってきます。

少し複雑になりますが、QAudio関連を調べて見て下さい。

投稿2020/07/18 13:24

編集2020/07/18 13:28
teamikl

総合スコア8760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OKA-G

2020/07/18 14:25

無事出来ました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問