1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| #!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5 import (QtWidgets, QtCore)
#############################################################################
class Dialog(QtWidgets.QDialog):
# nouveau signal pour transmettre les données
donnees = QtCore.pyqtSignal(list)
#========================================================================
def __init__(self, parent=None):
super().__init__(parent)
self.resize(300,200)
self.spinbox1 = QtWidgets.QSpinBox(self)
self.spinbox2 = QtWidgets.QSpinBox(self)
# crée les boutons pour terminer le dialogue
qbb = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel
self.boutonbox = QtWidgets.QDialogButtonBox(qbb)
self.boutonbox.accepted.connect(self.quitter) # => bouton "Ok"
self.boutonbox.rejected.connect(self.annuler) # => bouton "Annuler"
posit = QtWidgets.QGridLayout()
posit.addWidget(self.spinbox1, 0, 0)
posit.addWidget(self.spinbox2, 1, 0)
posit.addWidget(self.boutonbox, 2, 0)
self.setLayout(posit)
#========================================================================
def quitter(self):
"""fermeture normale de la fenêtre dialog (bouton "Ok")
"""
self.donnees.emit([self.spinbox1.value(), self.spinbox2.value()])
self.close()
#========================================================================
def annuler(self):
"""annulation de la recherche de données (bouton "Annuler")
NB: idem pour la fermeture par la croix ou le menu système
"""
self.donnees.emit([None, None])
self.close()
#############################################################################
class Fenetre(QtWidgets.QWidget):
#========================================================================
def __init__(self, parent=None):
super().__init__(parent)
self.resize(300,100)
self.bouton = QtWidgets.QPushButton("Saisie des données", self)
self.bouton.clicked.connect(self.saisie)
posit = QtWidgets.QGridLayout()
posit.addWidget(self.bouton, 0, 0)
self.setLayout(posit)
#========================================================================
def saisie(self):
"""lancement de la fenêtre de dialogue pour la saisie des données
"""
self.dialog = Dialog(self)
self.dialog.donnees.connect(self.recupinfos) # prépare la récupération des données saisies
self.dialog.exec_()
#========================================================================
def recupinfos(self, liste):
"""Récupération des infos
"""
self.dialog.hide() # cache la fenêtre dialog encore affichée (elle sera fermée juste après)
if liste!=[None, None]:
QtWidgets.QMessageBox.information(self,
"Récupération des infos:",
"nombre 1: {}\nnombre 2: {}".format(liste[0], liste[1]))
#############################################################################
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
fen = Fenetre()
fen.show()
sys.exit(app.exec_()) |
Partager