PyQt - QDialog 类

QDialog 小部件呈现一个顶级窗口,主要用于收集用户的响应。 它可以配置为 Modal(它会阻止其父窗口)或 Modeless(可以绕过对话窗口)。

PyQt API 有许多预配置的 Dialog 小部件,例如 InputDialog、FileDialog、FontDialog 等。


示例

在下面的示例中,Dialog 窗口的 WindowModality 属性决定它是模态的还是非模态的。 对话框上的任何一个按钮都可以设置为默认值。 当用户按下 Escape 键时,该对话框被 QDialog.reject() 方法丢弃。

顶级 QWidget 窗口上的 PushButton 在单击时会生成一个 Dialog 窗口。 对话框的标题栏上没有最小化和最大化控件。

用户无法在后台将此对话框降级,因为它的 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 类输出