Tutoriel PyQt5 - Disposition de la grille

  1. Disposition de la grille PyQt5
  2. PyQt5 Portée de la grille
  3. PyQt5 Étirement de la grille

Nous allons apprendre une autre méthode de mise en page dans PyQt5 dans ce tutoriel - la mise en page de la grille.

Disposition de la grille PyQt5

La classe QGridLayout dispose les widgets dans une grille. La classe QGridLayout prend l’espace disponible et le divise en lignes et colonnes, puis place chaque widget dans la bonne cellule.

Grid Layout.py
import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout,QPushButton, QApplication)

class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        grid_layout = QGridLayout()
        self.setLayout(grid_layout)

        for x in range(3):
            for y in range(3):
                button = QPushButton(str(str(3*x+y)))
                grid_layout.addWidget(button, x, y)
        
        self.setWindowTitle('Basic Grid Layout')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    windowExample = basicWindow()
    windowExample.show()
    sys.exit(app.exec_())

Où,

grid_layout = QGridLayout()

QGridLayout de QWidgets spécifie le format de mise en page de la grille.

self.setLayout(grid_layout)

Il définit le format de la classe comme étant juste la méthode de mise en page définie - grid layout.

grid_layout.addWidget(button, x, y)

La méthode addWidget de la classe QGridLayout place le widget bouton dans la cellule gird à x, y. La position en haut à gauche est par défaut (0, 0).

Disposition de la grille PyQt5

PyQt5 Portée de la grille

Normalement, chaque widget consomme une cellule de la grille, mais il est aussi possible pour le widget d’occuper plus de cellules en utilisant des lignes et des colonnes couvrant les nombres de la méthode surchargée addWidget().

addWidget (self, QWidget, row, column, rowSpan, columnSpan, Qt.Alignment alignment = 0)

Les troisième et quatrième paramètres sont l’espacement des lignes et des colonnes, égal à un par défaut. Si l’espacement est de -1, le widget de cellule s’étendra vers le bord droit ou le bord inférieur.

Grid Layout Span.py
import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout,QPushButton, QApplication)

class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        grid_layout = QGridLayout()
        self.setLayout(grid_layout)

        button = QPushButton('1-3')
        grid_layout.addWidget(button, 0, 0, 1, 3)
        
        button = QPushButton('4, 7')
        grid_layout.addWidget(button, 1, 0, -1, 1)
        
        for x in range(1, 3):
            for y in range(1, 3):
                button = QPushButton(str(str(3*x+y)))
                grid_layout.addWidget(button, x, y)
        
        self.setWindowTitle('Basic Grid Layout')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    windowExample = basicWindow()
    windowExample.show()
    sys.exit(app.exec_())
    

Portée de la grille PyQt5

PyQt5 Étirement de la grille

setColumnStretch et setRowStretch définissent le facteur d’étirement de la colonne ou de la ligne. Le facteur d’étirement est un nombre relatif par rapport aux autres colonnes ou lignes. Les colonnes/rangées avec un facteur plus élevé prennent plus d’espace disponible.

Grid Layout Stretch.py
import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout,QPushButton, QApplication)

class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        grid_layout = QGridLayout()
        self.setLayout(grid_layout)

        for x in range(3):
            for y in range(3):                
                button = QPushButton(str(str(3*x+y)))
                
                grid_layout.addWidget(button, x, y)
                
            grid_layout.setColumnStretch(x, x+1)
            
                
        self.setWindowTitle('Basic Grid Layout')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    windowExample = basicWindow()
    windowExample.show()
    sys.exit(app.exec_())
    
grid_layout.setColumnStretch(x, x+1)

Il définit le facteur d’étirement des trois lignes comme étant respectivement de 1, 2 et 3, donc l’ordre de la largeur de la colonne est Troisième Colonne > Deuxième Colonne > Première Colonne.

PyQt5 Disposition de la Grille Étirement