質問編集履歴
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)
         | 
