PyQt/PySide – développement d'applications desktop

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

  1. Création d'une instance de QApplication
  2. Création et configuration des widgets
  3. Affichage de la fenêtre principale
  4. Lancement de la boucle d'événements via exec() ou exec_()
  5. Fermeture de l'application

Recommendations