2017-02-13 1 views
0

PyQt5では、QMessageBoxがMainWindowで親として初期化されると、MessageBoxが受け入れられたり閉じたりするまで、MainWindowへの入力がブロックされます。PyQt5メインウィンドウをブロックするQErrorMessageを取得する

ただし、MainWindowを親として使用してQErrorMessageを初期化すると、この動作は発生しません。いくつかの種類のウィンドウパラメーターをQErrorMessageに渡して、閉じられるまで親ウィンドウをブロックする方法はありますか?

n.b.私はQMessageBoxを動作させ、QErrorMessageのように見せることができることを認識しています。私はちょうど上記の動作が可能かどうかを知りたいです。

+0

を使用すると、あなたは '正常な動作を持っている(真)' setModalを設定しようとすることができモーダルとしてごQErrorMessageを設定します。 '.exec _()'で 'QErrorMessage'を実行することもできます。どちらもあなたのケースで動作するはずです。 – SyedElec

+0

@SyedElec私は '.exec _()'を使っていたので、私は驚いていました。 – Grr

+0

'setModal(True)'でダイアログのモダリティを強制しようとしましたか? 'setWindowModality()'を使ってダイアログのモダリティを変更しない限り、 'exec_()'はこのトリックを行うべきです。簡単な例を表示できますか? – SyedElec

答えて

1

はQMessageBoxがQDialogを継承するようsetWindowModality(QtCore.Qt.WindowModal)

from PyQt5 import QtCore, QtWidgets 

class MainWindow(QtWidgets.QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 

     emsg = QtWidgets.QErrorMessage(self) 
     emsg.setWindowModality(QtCore.Qt.WindowModal) 

     cwidget = QtWidgets.QWidget() 
     layout = QtWidgets.QVBoxLayout(cwidget) 
     lineedit = QtWidgets.QLineEdit() 
     button = QtWidgets.QPushButton('Show message') 
     button.clicked.connect(lambda: emsg.showMessage('Message: ' + lineedit.text())) 
     layout.addWidget(lineedit) 
     layout.addWidget(button) 
     self.setCentralWidget(cwidget) 


app = QtWidgets.QApplication([]) 
win = MainWindow() 
win.show() 
app.exec_() 
+0

私は 'setModal(True)'と 'setWindowModality(QtCore.Qt.WindowModal)'の両方を試しましたが、どちらもうまくいきませんでした。これは、メインウィンドウで何かが不適切に設定された結果である可能性がありますか?残念ながら私は他の誰かのプロジェクトをクリーンアップしようとしているので、 'Ui_MainWindow'クラスのすべての設定については完全にはわかりません。 – Grr

+0

上記の例はあなたに適していますか? 'MainWindow'が' QMessageBox'の親として割り当てられているか、ブロックされていないことを確認してください。 'MainWindow'の設定がこの動作に影響するかどうかはわかりません。 – user3419537

+0

ああ、だからダム。あなたのコードはうまくいきました。私はモダリティを設定する前に 'showMessage()'を呼び出していました。私は 'showMessage()'が効果的に 'show()'を呼び出していることに気づいていませんでした。私の注文は 'showMessage()'、 'setModal()'で、その後は 'show()'や 'exec _()'を呼び出しました。 – Grr

関連する問題