ボタンを押した後に表示されるウィンドウ/ウィジェットがあります。ウィジェットが閉じるまでメイン ウィンドウを待機させる方法はありますか? 私は.show()
現在使用して.exec_()
おり、すでに使用しようとしましたが、次のエラーが表示されます。
AttributeError: 'MainWindow' object has no attribute 'exec_'
何か助けはありますか?
ウィンドウ/ウィジェットが閉じるまで待機するには、ローカル イベント ループを使用します。
widget = QWidget()
widget.setAttribute(Qt.WA_DeleteOnClose)
widget.show()
loop = QEventLoop()
widget.destroyed.connect(loop.quit)
loop.exec() # wait ...
print('finished')
他のウィンドウとの対話もブロックするには、ウィンドウのモダリティを設定します。
widget.setWindowModality(Qt.ApplicationModal)
または、親を持つトップレベル ウィンドウの場合:
window.setWindowModality(Qt.WindowModal)
もちろん、ウィンドウ/ウィジェットを に変更できる場合は、同じ機能がexecQDialog
によって提供されるため、上記のいずれも必要ありません。
widget = QDialog()
widget.exec() # wait ...