Gestion de la mise en page Python PyQt
Dans le développement d'applications GUI,la gestion de la mise en pagedésigne la façon d'organiser et de disposer divers contrôles (tels que des boutons, des zones de texte, etc.) dans une fenêtre.
PyQt fournit plusieurs gestionnaires de mise en page qui peuvent nous aider à ajuster automatiquement la position et la taille des contrôles, afin que l'interface puisse conserver un bon affichage dans des fenêtres de tailles différentes.
Pourquoi la gestion de la mise en page est nécessaire
- S'adapter à différentes résolutions: Les utilisateurs peuvent utiliser des écrans de tailles différentes
- Simplifier le développement: Pas besoin de calculer manuellement la position de chaque contrôle
- Maintenance facile: Lors de l'ajout ou de la suppression de contrôles, la mise en page s'ajuste automatiquement
Principaux gestionnaires de mise en page de PyQt
PyQt fournit les gestionnaires de mise en page couramment utilisés suivants :
1. QHBoxLayout - Mise en page horizontale
Dispose les contrôles horizontalement de gauche à droite.
Exemple
layout.addWidget(QPushButton("Bouton 1"))
layout.addWidget(QPushButton("Bouton 2"))
layout.addWidget(QPushButton("Bouton 3"))
2. QVBoxLayout - Disposition verticale
Dispose les contrôles verticalement de haut en bas.
Exemple
layout.addWidget(QPushButton("Bouton 1"))
layout.addWidget(QPushButton("Bouton 2"))
layout.addWidget(QPushButton("Bouton 3"))
3. QGridLayout - Disposition en grille
Dispose les contrôles en lignes et en colonnes dans une grille.
Exemple
layout.addWidget(QPushButton("1,1"), 0, 0) # Ligne 0, Colonne 0
layout.addWidget(QPushButton("1,2"), 0, 1) # Ligne 0, Colonne 1
layout.addWidget(QPushButton("2,1"), 1, 0) # Ligne 1, Colonne 0
4. QFormLayout - Disposition de formulaire
Particulièrement adapté à la création d'interfaces de formulaire avec des paires libellé-champ.
Exemple
layout.addRow("Nom :", QLineEdit())
layout.addRow("Âge :", QLineEdit())
Utilisation imbriquée des dispositions
Dans les applications pratiques, nous devons souvent combiner plusieurs gestionnaires de disposition pour créer des interfaces complexes.
Exemple : disposition de la fenêtre principale
Exemple
window = QWidget()
# Créer la disposition verticale principale
main_layout = QVBoxLayout()
# Ajouter une disposition horizontale en haut
top_layout = QHBoxLayout()
top_layout.addWidget(QPushButton("Fichier"))
top_layout.addWidget(QPushButton("Modifier"))
main_layout.addLayout(top_layout)
# Ajouter une disposition en grille centrale
center_layout = QGridLayout()
center_layout.addWidget(QTextEdit(), 0, 0, 2, 2) # Occupe 2 lignes et 2 colonnes
center_layout.addWidget(QPushButton("Enregistrer"), 0, 2)
center_layout.addWidget(QPushButton("Annuler"), 1, 2)
main_layout.addLayout(center_layout)
# Ajouter une disposition horizontale en bas
bottom_layout = QHBoxLayout()
bottom_layout.addStretch() # Ajouter un espace extensible
bottom_layout.addWidget(QPushButton("OK"))
bottom_layout.addWidget(QPushButton("Annuler"))
main_layout.addLayout(bottom_layout)
window.setLayout(main_layout)
window.show()
Fonctionnalités avancées des dispositions
1. Facteur d'étirement
Permet de contrôler la taille relative des contrôles dans la disposition.
Exemple
layout.addWidget(QPushButton("Gauche"), stretch=1) # Occupe 1 partie de l'espace
layout.addWidget(QPushButton("Centre"), stretch=2) # Occupe 2 parties de l'espace
layout.addWidget(QPushButton("Droite"), stretch=1) # Occupe 1 partie de l'espace
2. Contrôle de l'espacement
Exemple
layout.setContentsMargins(20, 20, 20, 20) # Marges sur les bords de la disposition
3. Alignement
Exemple
layout.addWidget(button, alignment=Qt.AlignRight) # Aligné à droite
Bonnes pratiques
- Donnez la priorité à l'utilisation de gestionnaires de mise en page: évitez d'utiliser le positionnement absolu (setGeometry)
- Imbriquez raisonnablement les mises en page: combinez différentes mises en page pour créer des interfaces complexes
- Utilisez un espace extensible: faites en sorte que l'interface s'affiche correctement à différentes tailles
- Maintenez la cohérence: utilisez la même approche de mise en page pour des éléments d'interface similaires
- Testez différentes résolutions: assurez-vous que l'interface fonctionne correctement sur différentes tailles d'écran
En maîtrisant le système de gestion de mise en page de PyQt, vous pouvez créer des interfaces d'application GUI professionnelles, belles et hautement adaptables.
Autres extensions