PyQt5 - Clase QDialog

UN QDialogEl widget presenta una ventana de nivel superior que se utiliza principalmente para recopilar la respuesta del usuario. Puede configurarse para serModal (donde bloquea su ventana principal) o Modeless (la ventana de diálogo se puede omitir).

La API de PyQt tiene varios widgets de diálogo preconfigurados, como InputDialog, FileDialog, FontDialog, etc.

Ejemplo

En el siguiente ejemplo, WindowModalityEl atributo de la ventana de diálogo decide si es modal o no modal. Cualquier botón del cuadro de diálogo se puede configurar como predeterminado. El diálogo es descartado porQDialog.reject() método cuando el usuario presiona la tecla Escape.

Un PushButton en una ventana de QWidget de nivel superior, cuando se hace clic, produce una ventana de diálogo. Un cuadro de diálogo no tiene controles para minimizar y maximizar en su barra de título.

El usuario no puede relegar este cuadro de diálogo en segundo plano porque su WindowModality está establecido en 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()

El código anterior produce la siguiente salida. Haga clic en el botón en la ventana principal y aparecerá el cuadro de diálogo -