PyQt - 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 una serie de widgets de diálogo preconfigurados como InputDialog, FileDialog, FontDialog, etc.

Ejemplo

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

Un PushButton en una ventana 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 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()

El código anterior produce la siguiente salida: