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
   |  
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
 
import sys
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import SIGNAL
 
###################################################
class Quelclient(QtGui.QWidget):
 
    def __init__(self, princ, parent=None):
        super(Quelclient, self).__init__(parent)
        self.setWindowTitle(u"Quel client")
 
        # permet d'accéder aux attributs de la fenêtre appelante
        self.princ = princ
 
        # créer un lineEdit
        self.lineEdit = QtGui.QLineEdit(self)
        # créer un bouton
        self.bouton = QtGui.QPushButton(u"Ok", self)
        self.bouton.clicked.connect(self.ok_m)
        # positionner les widgets dans la fenêtre
        posit = QtGui.QGridLayout()
        posit.addWidget(self.lineEdit, 0, 0)
        posit.addWidget(self.bouton, 1, 0)
        self.setLayout(posit)
 
    def ok_m(self):
        # transmettre le nom du client écrit à l'appelant
        self.princ.client = self.lineEdit.text()
        # emettra un signal "fermeturequelclient()" en passant ici
        self.emit(SIGNAL("fermeturequelclient()")) 
        # fermer la fenêtre
        self.close()
 
###################################################
class Principal(QtGui.QMainWindow):
 
    def __init__(self, parent=None):
        super(Principal, self).__init__(parent)
        self.setWindowTitle(u"Code test")
 
        # mettre un fond
        self.setCentralWidget(QtGui.QFrame())
        # créer un lineEdit
        self.lineEdit = QtGui.QLineEdit(self.centralWidget())
        # créer un bouton
        self.bouton = QtGui.QPushButton(u"Sélectionnez un client !", self.centralWidget())
        self.bouton.clicked.connect(self.quelclient_m)
        # positionner les widgets sur le fond de la fenêtre
        posit = QtGui.QGridLayout()
        posit.addWidget(self.lineEdit, 0, 0)
        posit.addWidget(self.bouton, 1, 0)
        self.centralWidget().setLayout(posit)
 
    def quelclient_m(self):
        self.client = None
        self.quelclient = Quelclient(self)
        # en cas de signal "fermeturequelclient()" reçu de self.quelclient => exécute clienchoisi 
        self.connect(self.quelclient, SIGNAL("fermeturequelclient()"), self.clientchoisi) 
        # appel de la 2ème fenêtre
        self.quelclient.setWindowModality(QtCore.Qt.ApplicationModal)
        self.quelclient.show()
 
    def clientchoisi(self):
        if self.client != None:
            self.lineEdit.setText(self.client)
 
###################################################
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('plastique'))
    main = Principal()
    main.show()
    sys.exit(app.exec_()) | 
Partager