質問編集履歴
3
アドバイス頂いた後のコード
title
CHANGED
File without changes
|
body
CHANGED
@@ -309,4 +309,46 @@
|
|
309
309
|
コメントに記載してみます。
|
310
310
|
|
311
311
|
multiprocessingが簡易なのではとコーディングしましたが、音楽は流れて波形も表示されていますが、画像表示のボタンを押した際にフリーズになってしまいました。
|
312
|
-

|
312
|
+

|
313
|
+
|
314
|
+
### アドバイス頂いた直後に実践したコード
|
315
|
+
```python
|
316
|
+
# 先頭に
|
317
|
+
# ファイルの先頭で
|
318
|
+
import logging
|
319
|
+
logger = logging.getLogger(__name__)
|
320
|
+
|
321
|
+
# ログにスレッド名を表示&ロギングを有効にする設定
|
322
|
+
# if __name__ == "__main__": 内に置きたいが、なければファイル先頭でもok
|
323
|
+
logging.basicConfig(level=logging.DEBUG, format="[%(threadName)-10s][%(levelname)-8s] %(message)s")
|
324
|
+
|
325
|
+
# logger モジュールは、スレッドセーフなので、どこからでも安全に呼び出せます。
|
326
|
+
# print の代わりに利用 logger.info, logger.debug, logger.error, 等
|
327
|
+
fn = "futta-fly.wav"
|
328
|
+
logger.debug(f"debug message: {fn=}") # f-string で変数 fn を表示
|
329
|
+
|
330
|
+
#~略~
|
331
|
+
|
332
|
+
def play_audio():
|
333
|
+
# TODO: リソース作成・解放はスレッド側で完結する
|
334
|
+
wf = wave.open(filename, "r")
|
335
|
+
# ストリームを開く
|
336
|
+
p = pyaudio.PyAudio()
|
337
|
+
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
|
338
|
+
channels=wf.getnchannels(),
|
339
|
+
rate=wf.getframerate(),
|
340
|
+
output=True)
|
341
|
+
|
342
|
+
# 音声を再生
|
343
|
+
data = wf.readframes(CHUNK)
|
344
|
+
while True:
|
345
|
+
stream.write(data)
|
346
|
+
redraw()
|
347
|
+
|
348
|
+
elif event in '-do-':
|
349
|
+
# ボタンを押した時に開始
|
350
|
+
thread = threading.Thread(target=play_audio, args=(data_que,ui_que), daemon=True)
|
351
|
+
thread.start()
|
352
|
+
```
|
353
|
+
doボタンを押下しても下記コンソールのみですぐウィンドウが閉じてしまいました。
|
354
|
+

|
2
アドバイス実践①追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -301,4 +301,12 @@
|
|
301
301
|
### 補足情報(FW/ツールのバージョンなど)
|
302
302
|
windows10
|
303
303
|
PySimpleGUI
|
304
|
-
Python3.8.8
|
304
|
+
Python3.8.8
|
305
|
+
|
306
|
+
### アドバイス直後に実装したコード①
|
307
|
+
|
308
|
+
先ほどこちらにコード記載したところ18000文字となってしまい8000文字オーバーになってしまいました。
|
309
|
+
コメントに記載してみます。
|
310
|
+
|
311
|
+
multiprocessingが簡易なのではとコーディングしましたが、音楽は流れて波形も表示されていますが、画像表示のボタンを押した際にフリーズになってしまいました。
|
312
|
+

|
1
リンク切れ修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
|
6
6
|
### 参照
|
7
7
|
①[PySimpleGUIを使用したmultithreadの作り方](https://qiita.com/Gyutan/items/f41f39bc3df7d788ffc5)
|
8
|
-
②[スペクトラム波形作成
|
9
|
-
](https://teratail.com/questions/289920)
|
8
|
+
②[スペクトラム波形作成](https://teratail.com/questions/289920)
|
9
|
+
|
10
10
|
③[
|
11
11
|
著作権フリーwav](https://music.futta.net/fly.html)は、こちらのwavを使っています。
|
12
12
|
④[ボタンによる画像選択表示の参照コードサンプル](http://blawat2015.no-ip.com/~mieki256/diary/202003041.html)
|