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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
| #! /usr/bin/python
#-*-coding: utf-8 -*-
import sys
from PySide import QtCore,QtGui
####################################### Classe fenetre principale ################################################################
class Fenetre_Principale(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
zonecentrale= QtGui.QWidget()
self.setCentralWidget(zonecentrale)
#------------------------------------------------- Taille de la fenetre principale -----------------------------------------------
#taille de la fenetre principale si taille inferieure
size_ecran = QtGui.QDesktopWidget().screenGeometry()
Hauteur=int(size_ecran.height()*.5)
Largeur=int(size_ecran.width()*.5)
self.resize(Largeur,Hauteur)
#------------------------------------------------- Titre de l'application---------------------------------------------------------
self.setWindowTitle('Fenetre principale')
#------------------------------------------------- Fond de la fenetre principale -------------------------------------------------
self.fond = QtGui.QScrollArea(self)
self.fond.setStyleSheet("background-color: rgb(180,180,180)")
self.fond.setObjectName("fond")
self.fondContient = QtGui.QWidget(self.fond)
#------------------------------------------------- Barre d'information------------------------------------------------------------
#Creation de la barre de statut avec les informations voulues.
self.statusBar().showMessage('Structure')
#------------------------------------------------- Barre de menu------------------------------------------------------------------
# Creation d'une barre de menu
menubar = self.menuBar()
#------------------------------------------------- Menu Fichier-------------------------------------------------------------------
m_Fichier = menubar.addMenu('Fichier')
self.menuquit = QtGui.QAction('Quitter', self,shortcut=QtGui.QKeySequence.Close,
statusTip='Quitter l\'application',triggered=self.close)
m_Fichier.addAction(self.menuquit)#ajout de l'action
#------------------------------------------------- Barre outil--------------------------------------------------------------------
self.toolbar = self.addToolBar('Quitter')
self.toolbar.addAction(self.menuquit)
self.toolbar.setMovable(False)
#------------------------------------------------- Elements de la fenetre principale ---------------------------------------------
#bouton
self.bouton=QtGui.QPushButton('Lancer la feuille enfant',self.fondContient)
self.bouton.clicked.connect(self.ouvre_fenetre_enfant)
self.bouton.move(20,50)
#------------------------------------------------- Placement des elements de la fenetre principale -------------------------------
#determine la taille du fond par rapport aux elements de la fenetre
#fois 10 pour voir apparaitre les scrollbars sinon le determiner selon les widgets
Largeur=int(self.width()*10)
Hauteur=int(self.height()*10)
self.fondContient.setGeometry(0,0,Largeur,Hauteur)
self.fondContient.setObjectName("fondContient")
self.fond.setWidget(self.fondContient)
#mise en page
hbox=QtGui.QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(self.fond)
self.setLayout(hbox)
#redimensionne le fond
self.resizeEvent(self.event)
##################################### Fonctions fenetre Principale ###############################################################
#------------------------------------------------- Fonction fermeture de la fenetre principale------------------------------------
def closeEvent (self, event):
"""Fonction de fermeture de la fenetre principale"""
#message (Voulez-vous quitter l'application ?)
reply = QtGui.QMessageBox.question(self,'Attention ?','Voulez-vous quitter l\'application ? ',
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.No)
#si on clique sur le bouton oui
if reply == QtGui.QMessageBox.Yes:
event.accept() #ferme la fenetre
else:
event.ignore() #annule pas de fermeture
#------------------------------------------------- Fonction de redimensionnement de la fenetre principale-------------------------
def resizeEvent(self, event):
"""redimensionne la fenetre principale"""
Largeur=int(self.width())
Hauteur=int(self.height()-self.statusBar().height()-self.toolbar.height()-25)
V=int(self.toolbar.geometry().top()+self.toolbar.height())
self.fond.setGeometry(0,V,Largeur,Hauteur)
#------------------------------------------------- Fonction ouvrir --------------------------------------------------------------
def ouvre_fenetre_enfant(self):
"""Fonction qui ouvre la fenetre enfant"""
self.new=Fenetre_Enfant(self)
self.new.setWindowFlags(QtCore.Qt.Window)
self.new.setWindowModality(QtCore.Qt.ApplicationModal)
self.new.show()
####################################### Classe fenetre enfant ####################################################################
class Fenetre_Enfant(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.parent=parent
#------------------------------------------------- Taille de la fenetre enfant----------------------------------------------------
#taille de la fenetre principale si taille inferieure
size_ecran = QtGui.QDesktopWidget().screenGeometry()
Hauteur=int(size_ecran.height()*.5)
Largeur=int(size_ecran.width()*.5)
self.resize(Largeur,Hauteur)
#------------------------------------------------- Titre de la fenetre enfant-----------------------------------------------------
self.setWindowTitle('Fenetre enfant')
#------------------------------------------------- Fond de la fenetre enfant------------------------------------------------------
self.fond = QtGui.QScrollArea(self)
self.fond.setStyleSheet("background-color: rgb(200,200,200)")
self.fond.setObjectName("fond")
self.fondContient = QtGui.QWidget(self.fond)
#------------------------------------------------- Elements de la fenetre enfant--------------------------------------------------
#------------------------------------------------- Placement des elements de la fenetre enfant------------------------------------
#determine la taille du fond par rapport aux elements de la fenetre
Largeur=int(self.width()*10)
Hauteur=int(self.height()*10)
self.fondContient.setGeometry(0,0,Largeur,Hauteur)
self.fondContient.setObjectName("fondContient")
self.fond.setWidget(self.fondContient)
#mise en page
hbox=QtGui.QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(self.fond,1,0)
self.setLayout(hbox)
#redimensionne le fond
self.resizeEvent(self.event)
##################################### Fonctions fenetre Mercuriale ###############################################################
def closeEvent (self, event):
"""Fonction de fermeture de la nouvelle fenetre"""
self.hide()
#------------------------------------------------- Fonction de redimensionnement de la fenetre -----------------------------------
def resizeEvent(self, event):
"""redimensionne la fenetre enfant"""
Largeur=int(self.width())
Hauteur=int(self.height())
self.fond.setGeometry(0,0,Largeur,Hauteur)
##################################### Fonctions generales de l'application #######################################################
#------------------------------------------------- Fonction Centrer une fenetre --------------------------------------------------
def Centrer(fenetre):
"""Centrer une fenetre"""
qr = fenetre.frameGeometry()
cp = QtGui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
fenetre.move(qr.topLeft())
##################################### Lancement du programme #####################################################################
if __name__ == '__main__':
app = QtGui.QApplication (sys.argv)
FP = Fenetre_Principale()
FP.showMaximized()
sys.exit(app.exec_()) |