前提・実現したいこと
PyQtによるGUIでボタンを実装し、そのボタンを押したときに一本道の通信(20秒ほど)を行い、その後、次GUIウインドウを表示したいです。
そのまま通信するプログラムを入れても、動作はするとおもいますが、おそらくGUIが「応答なし」の表示になると思います。
この時の「応答なし」を回避したいです。スレッドを立てたほうがいいかと考えたのですが、PyQt自体がスレッドであると聞いたので、どうすべきか悩んでいます。
GUIウインドウを止めることがよくないのであればやはり、スレッドを立てて通信をおこない、終了次第なんらかの方法でGUIを次の画面に移すべきでしょうか。ご教授お願い致します。
該当のソースコード
python
1from gui_test import test_a 2class main_window(QtWidgets.QMainWindow): 3 def __init__(self): 4 QtWidgets.QMainWindow.__init__(self) 5 ##GUIの初期化部#### 6 self.main=Ui_MainWindow() 7 self.main.setupUi(self) 8 self.main.retranslateUi(self) 9 10 ##ボタンをおした時にconnectする関数 11 def start(self): 12 13 print("start") 14 ####ここで一連の通信を行う 15 ###通信が終わり次第testを開きたい 16 test.show() 17 18 19################メイン########################################################### 20if __name__ == '__main__': 21 22 23 app = QtWidgets.QApplication(sys.argv) 24 window = main_window() 25 26 ##test_a()は次に動作させたいQDialog 27 test = test_a() 28 29 30 window.show() 31 app.exec_() 32 33
試したこと
試しに通信部にsleepを入れると予想通り「応答なし」になりました
回答2件
あなたの回答
tips
プレビュー