Introduction
PyQt et PySide sont des bibliothèques puissantes pour créer des interfaces graphiques multiplateformes en Python avec le framework Qt. Elles donnent accès à la riche palette d'outils de Qt : widgets, systèmes d'événements, styles, animations, gestion de bases de données et même QML pour des interfaces modernes.
La principale différence entre PyQt et PySide réside dans les licences : PyQt nécessite une licence GPL ou commerciale, tandis que PySide (l'implémentation officielle de Qt Company) est distribué sous licence LGPL plus permissive, ce qui le rend préférable pour les projets commerciaux.
Dans ce guide complet, nous explorons tous les aspects de ces bibliothèques : de l'installation et la création d'interfaces simples aux projets complexes avec bases de données, design et compilation d'applications prêtes à l'emploi.
Installation et configuration
Installation de PyQt5 et PyQt6
# PyQt5 (version stable)
pip install pyqt5 pyqt5-tools
# PyQt6 (version moderne)
pip install pyqt6 pyqt6-tools
Installation de PySide2 et PySide6
# PySide2 (pour Qt 5)
pip install pyside2
# PySide6 (version recommandée)
pip install pyside6
Vérification de l'installation
# Pour PyQt5
from PyQt5.QtWidgets import QApplication
print("PyQt5 installé avec succès")
# Pour PySide6
from PySide6.QtWidgets import QApplication
print("PySide6 installé avec succès")
Créer des applications de base
Fenêtre simple avec un bouton
Version PyQt5
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Ma première application PyQt5')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Cliquez-moi')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("Bouton cliqué !")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Version PySide6
from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Ma première application PySide6')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('Cliquez-moi')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("Bouton cliqué !")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
Architecture des applications Qt
Composants principaux
QApplication est l'objet central de toute application Qt. Il gère la boucle d'événements, traite les événements système et coordonne tous les widgets.
QWidget est la classe de base pour tous les éléments d'interface utilisateur. Il peut contenir d'autres widgets et servir de conteneur.
QMainWindow est un widget spécialisé pour créer la fenêtre principale d'une application avec prise en charge des menus, barres d'outils, barre d'état et widget central.
QDialog est la classe pour créer des boîtes de dialogue, y compris les dialogues modaux et non modaux.
Cycle de vie d'une application
- Création d'une instance de QApplication
- Création et configuration des widgets
- Affichage de la fenêtre principale
- Lancement de la boucle d'événements via exec() ou exec_()
- Fermeture de l'application
Aussi dans la bibliothèque
Symfony/Console PHP : guide complet avec exemples pratiques
gRPC pour C++ : bibliothèques, configuration et exemples de code
Validation des données en TypeScript : Zod, Yup et autres outils
Autorisation et authentification en C# (.NET) — guide complet