PyQt-QDialogクラス

*QDialog* ウィジェットは、ユーザーからの応答を収集するために主に使用されるトップレベルウィンドウを表示します。 *Modal* (親ウィンドウをブロックする)または *Modeless* (ダイアログウィンドウをバイパスできます)に構成できます。

PyQt APIには、InputDialog、FileDialog、FontDialogなどの多くの事前構成されたDialogウィジェットがあります。

次の例では、ダイアログウィンドウのWindowModality属性がモーダルかモードレスかを決定します。 ダイアログのいずれかのボタンをデフォルトに設定できます。 ユーザーがEscapeキーを押すと、ダイアログはQDialog.reject()メソッドによって破棄されます。

最上位のQWidgetウィンドウ上のプッシュボタンをクリックすると、ダイアログウィンドウが生成されます。 ダイアログボックスのタイトルバーには、最小化および最大化コントロールがありません。

WindowModalityがApplicationModalに設定されているため、ユーザーはこのダイアログボックスをバックグラウンドで委任できません。

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

def window():
   app = QApplication(sys.argv)
   w = QWidget()
   b = QPushButton(w)
   b.setText("Hello World!")
   b.move(50,50)
   b.clicked.connect(showdialog)
   w.setWindowTitle("PyQt Dialog demo")
   w.show()
   sys.exit(app.exec_())

def showdialog():
   d = QDialog()
   b1 = QPushButton("ok",d)
   b1.move(50,50)
   d.setWindowTitle("Dialog")
   d.setWindowModality(Qt.ApplicationModal)
   d.exec_()

if __name__ == '__main__':
   window()

上記のコードは、次の出力を生成します-

QDialogクラスの出力