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