PyQt5 - QDialog 类


QDialog小部件提供了一个顶级窗口,主要用于收集用户的响应。它可以配置为模态(阻止其父窗口)或无模式(可以绕过对话框窗口)。

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

例子

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

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

用户无法将此对话框降级到后台,因为其 WindowModality 设置为ApplicationModal

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

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

def showdialog():
   dlg = QDialog()
   b1 = QPushButton("ok",dlg)
   b1.move(50,50)
   dlg.setWindowTitle("Dialog") 9. PyQt5 — QDialog Class
   dlg.setWindowModality(Qt.ApplicationModal)
   dlg.exec_()

if __name__ == '__main__':
   window()

上面的代码产生以下输出。单击主窗口中的按钮,弹出对话框 -

QDialog 类输出