PyQt5 QDialog 类


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

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

例子


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

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

用户无法在后台将此对话框降级,因为它的 WindowModality 设置为 应用模式 .

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 Class 输出