PyQt - Classe QDialog

UN QDialogwidget presenta una finestra di primo livello utilizzata principalmente per raccogliere la risposta dell'utente. Può essere configurato per essereModal (dove blocca la sua finestra genitore) o Modeless (la finestra di dialogo può essere ignorata).

PyQt API ha una serie di widget di dialogo preconfigurati come InputDialog, FileDialog, FontDialog, ecc.

Esempio

Nell'esempio seguente, l'attributo WindowModality della finestra di dialogo decide se è modale o non modale. Qualsiasi pulsante nella finestra di dialogo può essere impostato come predefinito. La finestra di dialogo viene scartata dal metodo QDialog.reject () quando l'utente preme il tasto Esc.

Un pulsante in una finestra QWidget di livello superiore, quando cliccato, produce una finestra di dialogo. Una finestra di dialogo non ha i controlli di minimizzazione e ingrandimento sulla barra del titolo.

L'utente non può relegare questa finestra di dialogo in background perché il suo WindowModality è impostato su 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()

Il codice precedente produce il seguente output: