PyQt - Classe QDialog

UNE QDialogwidget présente une fenêtre de niveau supérieur principalement utilisée pour collecter la réponse de l'utilisateur. Il peut être configuré pour êtreModal (où il bloque sa fenêtre parente) ou Modeless (la fenêtre de dialogue peut être contournée).

L'API PyQt a un certain nombre de widgets de dialogue préconfigurés tels que InputDialog, FileDialog, FontDialog, etc.

Exemple

Dans l'exemple suivant, l'attribut WindowModality de la fenêtre Dialog décide s'il est modal ou non modal. N'importe quel bouton de la boîte de dialogue peut être défini par défaut. La boîte de dialogue est ignorée par la méthode QDialog.reject () lorsque l'utilisateur appuie sur la touche Échap.

Un PushButton sur une fenêtre QWidget de niveau supérieur, lorsqu'on clique dessus, produit une fenêtre de dialogue. Une boîte de dialogue n'a pas de commandes de réduction et d'agrandissement sur sa barre de titre.

L'utilisateur ne peut pas reléguer cette boîte de dialogue en arrière-plan car sa WindowModality est définie sur 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()

Le code ci-dessus produit la sortie suivante -