質問: test_a() window.show() app.exec_() ``` ### 試したこと 試しに通信部にsleepを入れると予想通り「応答なし」になりました
回答: > > スレッド側で通信を終了したときに、メインGUIにどのように終了信号を渡し、次のGUIを表示するかがわからない > > > いくつか方法があります。 1)タイマー ある変数を用意して、GUI側で初期化、スレッド側で通信が終了したら変数を変化させ、 GUI側でタイマーを利用して監視して変化したら通信が終了と判断する。 2)コールバック スレッド側に通信終了時に呼び出すコールバックを渡す。GUI側でコールバックが呼ばれ たら、通信終了後の処理を行う。 この場合注意が必要なのは、コールバックはGUIとは別スレッドで動作するため、その ままGUI部品を操作すると問題が発生する場合があるので、初心者にはオススメしない 3)シグナル/スロット 上記1、2をもう少しスマートに実現したような感じで、必要な時にコールバックが呼ばれる 例) https://stackoverflow.com/questions/9614947/pyqt4-emiting-signals-in-threads-to-slots-in-main-thread スレッドを利用したシグナル/スロットのサンプルは探せば色々とある