# -*- coding: utf8 -*- # Les layouts from PyQt4 import QtGui, QtCore import sys class fenetre(QtGui.QWidget): """Classe permettant de créer une fenêtre""" def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) # La fenêtre self.setWindowTitle("Ma première fenêtre") self.resize(332, 190) # Les boutons self.mon_bouton1 = QtGui.QPushButton("Hey ! 1", self) self.mon_bouton2 = QtGui.QPushButton("Hey ! 2", self) self.mon_bouton3 = QtGui.QPushButton("Hey ! 3", self) app = QtGui.QApplication(sys.argv) f = fenetre() f.show() sys.exit(app.exec_())Lorsqu'on lance ce code, on ne voit malheureusement qu'un bouton, qui plus est le troisième, les deux autres sont .. en dessous. Ce n'est pas très pratique. Les layouts, permettent très simplement de mettre en page nos boutons.
| Nom | Objet |
|---|---|
| Vertical Layout | QtGui.QVBoxLayout(self) |
| Horizontal Layout | QtGui.QHBoxLayout(self) |
| Grid Layout | QtGui.QGridLayout(self)) |
| Form Layout | QtGui.QFormLayout(self) |
layout.addWidget(self.mon_bouton)Si nous reprenons un exemple complet avec par exemple le Layout Horizontal, nous obtenons ceci :
# -*- coding: utf8 -*- # Les layouts from PyQt4 import QtGui, QtCore import sys class fenetre(QtGui.QWidget): """Classe permettant de créer une fenêtre""" def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) # La fenêtre self.setWindowTitle("Ma première fenêtre") self.resize(332, 190) # Les boutons self.mon_bouton1 = QtGui.QPushButton("Hey ! 1", self) self.mon_bouton2 = QtGui.QPushButton("Hey ! 2", self) self.mon_bouton3 = QtGui.QPushButton("Hey ! 3", self) # Layout layout = QtGui.QHBoxLayout(self) # Ajout des boutons au layout layout.addWidget(self.mon_bouton1) layout.addWidget(self.mon_bouton2) layout.addWidget(self.mon_bouton3) app = QtGui.QApplication(sys.argv) f = fenetre() f.show() sys.exit(app.exec_())Maintenant nos 3 boutons sont bien visible :) et ils se positionnent automatiquement en fonction de la fenêtre !
vlayout.addLayout(self.hlayout)Désormais il n'y plus qu'à assembler les morceaux :
# -*- coding: utf8 -*- # Les layouts from PyQt4 import QtGui, QtCore import sys class fenetre(QtGui.QWidget): """Classe permettant de créer une fenêtre""" def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) # La fenêtre self.setWindowTitle("Ma première fenêtre") self.resize(332, 190) # Les boutons self.mon_bouton1 = QtGui.QPushButton("Hey ! 1", self) self.mon_bouton2 = QtGui.QPushButton("Hey ! 2", self) self.mon_bouton3 = QtGui.QPushButton("Hey ! 3", self) # Layouts vlayout = QtGui.QVBoxLayout(self) hlayout1 = QtGui.QHBoxLayout() hlayout2 = QtGui.QHBoxLayout() # Ajout des layouts vlayout.addLayout(hlayout1) vlayout.addLayout(hlayout2) # Ajout des boutons au layout hlayout1.addWidget(self.mon_bouton1) hlayout2.addWidget(self.mon_bouton2) hlayout1.addWidget(self.mon_bouton3) app = QtGui.QApplication(sys.argv) f = fenetre() f.show() sys.exit(app.exec_()))Avec un code structuré et commenté comme ceci, on se trompe moins, sans commentaire ce serait tout de suite moins clair.
un_espace = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)Avec 20 et 40 les tailles en pixels de cet espace !
hlayout1.addItem(un_espace)
Inscrire un commentaire