PyQt - klasa QDialog

ZA QDialogwidget prezentuje okno najwyższego poziomu używane głównie do zbierania odpowiedzi od użytkownika. Można go skonfigurować tak, aby byłModal (gdzie blokuje swoje okno nadrzędne) lub Modeless (okno dialogowe można pominąć).

PyQt API ma wiele wstępnie skonfigurowanych widżetów dialogowych, takich jak InputDialog, FileDialog, FontDialog itp.

Przykład

W poniższym przykładzie atrybut WindowModality okna Dialog decyduje, czy jest modalny, czy niemodalny. Każdy przycisk w oknie dialogowym można ustawić jako domyślny. Okno dialogowe jest odrzucane przez metodę QDialog.reject (), gdy użytkownik naciśnie klawisz Escape.

Kliknięcie przycisku PushButton w oknie QWidget najwyższego poziomu powoduje utworzenie okna dialogowego. Okno dialogowe nie ma elementów sterujących minimalizacją i maksymalizacją na pasku tytułu.

Użytkownik nie może zmienić pozycji tego okna dialogowego w tle, ponieważ jego WindowModality jest ustawiona na 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()

Powyższy kod daje następujące dane wyjściowe -