1

ボタンを押した後に表示されるウィンドウ/ウィジェットがあります。ウィジェットが閉じるまでメイン ウィンドウを待機させる方法はありますか? 私は.show()現在使用して.exec_()おり、すでに使用しようとしましたが、次のエラーが表示されます。

AttributeError: 'MainWindow' object has no attribute 'exec_'

何か助けはありますか?

4

1 に答える 1

3

ウィンドウ/ウィジェットが閉じるまで待機するには、ローカル イベント ループを使用します。

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 ...
于 2013-10-19T15:21:05.173 に答える