PyQt5 - 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, WindowModalityl'attributo 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 daQDialog.reject() metodo 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é la sua WindowModality è impostata su 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()
Il codice precedente produce il seguente output. Fare clic sul pulsante nella finestra principale e viene visualizzata la finestra di dialogo -