Présentation
PySide6 est le binding Python officiel de Qt 6. Il permet d’utiliser depuis Python les API du framework Qt pour créer des applications graphiques multiplateformes.
Il fait partie du projet Qt for Python, qui comprend également Shiboken6, un générateur de bindings permettant notamment d’exposer du code C++ à Python.
PySide6 permet de travailler avec deux grandes approches d’interface : Qt Widgets, adapté aux applications desktop classiques, et Qt Quick/QML, davantage orienté vers des interfaces déclaratives, animées et adaptatives.
L’installation standard s’effectue avec pip install pyside6. Les wheels fournies incluent les bibliothèques Qt nécessaires : une installation Qt séparée n’est donc généralement pas requise pour commencer.
Au 3 octobre 2026, PySide6 6.11.2 est la dernière version stable publiée sur PyPI. Elle prend en charge Python 3.10 à 3.14.
Fonctionnalités
Qt Widgets
Qt Widgets fournit les composants traditionnels des applications desktop : fenêtres, boutons, menus, champs de saisie, tableaux, arbres, dialogues ou barres d’outils.
Les widgets peuvent être assemblés directement en Python ou conçus graphiquement avec Qt Designer.
Cette approche convient particulièrement aux outils métier, éditeurs, utilitaires et applications desktop riches.
Qt Quick et QML
PySide6 permet également d’utiliser Qt Quick et QML.
QML décrit l’interface avec une syntaxe déclarative tandis que Python peut gérer logique métier, données et services.
Cette séparation est adaptée aux interfaces plus visuelles, animées ou devant s’adapter à différentes tailles d’écran.
Des objets Python peuvent être exposés à QML afin de faire communiquer les deux environnements.
Signaux et slots
Qt utilise un mécanisme de signaux et slots pour faire communiquer les différents objets d’une application.
Un bouton peut par exemple émettre un signal lorsqu’il est activé et déclencher une fonction Python connectée à ce signal.
PySide6 permet également de déclarer ses propres signaux, slots et propriétés Qt.
Ce modèle limite les dépendances directes entre composants et reste central dans l’architecture des applications Qt.
Designer et fichiers .ui
Qt Widgets Designer, accessible notamment via pyside6-designer, permet de construire visuellement des interfaces basées sur Qt Widgets.
Les fichiers .ui produits peuvent être chargés dynamiquement ou convertis en code Python avec pyside6-uic.
Cette approche permet de séparer une partie du travail de conception visuelle de la logique applicative.
Ressources
Qt utilise des fichiers .qrc pour regrouper des ressources comme images, icônes ou fichiers intégrés à l’application.
pyside6-rcc convertit ces ressources afin qu’elles puissent être utilisées depuis le projet Python.
L’outil pyside6-project peut automatiser la compilation des fichiers UI, ressources et QML nécessaires au projet.
Modèle / vue
Qt propose une architecture Model/View adaptée aux listes, tableaux et arbres de données.
Les données sont séparées de leur représentation visuelle, ce qui facilite notamment les interfaces manipulant de grands ensembles structurés.
Des modèles Qt existants peuvent être utilisés ou remplacés par des modèles personnalisés écrits en Python.
Réseau, multimédia et autres modules Qt
PySide6 expose une grande partie des modules de Qt 6.
Une application peut ainsi accéder aux fonctions réseau, bases de données, multimédia, WebEngine, Bluetooth, graphiques, impression ou encore Qt Quick 3D selon les modules installés et leur disponibilité sur la plateforme.
Le paquet principal s’appuie notamment sur PySide6 Essentials et PySide6 Addons pour distribuer ces bindings.
Shiboken6
Shiboken6 complète PySide6 en fournissant les outils nécessaires à la création de bindings entre C++ et Python.
Il peut être utilisé lorsqu’un projet possède une bibliothèque ou un moteur écrit en C++ qui doit être piloté depuis Python.
Il est également utilisé en interne pour générer les bindings Qt proposés par PySide6.
Projets et pyproject.toml
pyside6-project fournit plusieurs commandes pour créer, construire, exécuter et déployer des projets Qt for Python.
Depuis PySide6 6.9, le format standard pyproject.toml est recommandé pour décrire les fichiers et options d’un projet.
L’ancien format .pyproject reste pris en charge pour compatibilité mais est désormais déprécié.
Déploiement desktop
pyside6-deploy facilite la création d’applications distribuables sur Windows, macOS et Linux.
L’outil s’appuie sur Nuitka pour compiler et empaqueter Python, PySide6, Qt et les ressources nécessaires.
Selon la plateforme, il peut produire notamment un exécutable Windows, une application macOS ou un binaire Linux.
D’autres outils Python comme PyInstaller ou cx_Freeze peuvent également être utilisés selon le projet.
Android
PySide6 prend en charge le déploiement vers Android.
pyside6-android-deploy peut générer des packages APK ou AAB et préparer les dépendances Qt et Python nécessaires.
Le processus mobile reste toutefois plus complexe que le déploiement desktop et nécessite les outils Android appropriés, notamment SDK et NDK.
Cas d’usage
Créer une application desktop
PySide6 convient aux éditeurs, gestionnaires, outils techniques, logiciels métier ou applications disposant de nombreuses fenêtres et interactions.
Qt Widgets fournit une base particulièrement complète pour ce type de logiciel.
Construire une interface moderne avec QML
Qt Quick et QML permettent de développer des interfaces plus graphiques ou animées tout en conservant Python pour la logique applicative.
Cette architecture convient notamment aux tableaux de bord, interfaces tactiles et applications utilisant plusieurs résolutions.
Développer un outil Python avec interface graphique
Un projet Python existant peut utiliser PySide6 pour ajouter une véritable interface sans déplacer sa logique métier vers un autre langage.
Bibliothèques scientifiques, traitements de fichiers ou outils d’automatisation peuvent ainsi être intégrés à une application graphique.
Connecter Python et C++
Shiboken et les mécanismes Qt permettent de combiner une interface Python avec des bibliothèques C++ existantes.
Cette approche convient aux applications ayant besoin de conserver des composants natifs ou performants tout en utilisant Python pour une partie du développement.
Développer pour plusieurs systèmes
Une même base de code peut cibler Windows, macOS et Linux, avec également des possibilités de déploiement Android.
Des adaptations restent possibles lorsque certaines fonctions ou conventions d’interface diffèrent selon la plateforme.
Conclusion
PySide6 permet d’utiliser l’écosystème Qt 6 directement depuis Python sans devoir réécrire l’application en C++.
Qt Widgets couvre les interfaces desktop traditionnelles, tandis que Qt Quick/QML permet de construire des interfaces plus déclaratives et animées.
Designer, les systèmes de signaux et slots, Shiboken et les outils de déploiement forment un environnement particulièrement complet pour développer des applications graphiques en Python.
Cette puissance implique néanmoins de comprendre à la fois les concepts Python et l’architecture de Qt, ainsi que les contraintes de packaging et de licences lors de la distribution.
Pour construire des applications graphiques Python riches et multiplateformes avec un framework mature, PySide6 constitue l’une des principales solutions disponibles.
Points d’attention
-
PySide6 6.11.2 est la dernière version stable publiée sur PyPI au 3 octobre 2026.
-
PySide6 6.11.2 nécessite Python 3.10 à 3.14.
-
Qt 6.12 LTS est sorti le 30 septembre 2026, mais PySide6 6.12 n’est pas encore la version stable publiée sur PyPI à la date de vérification de cette fiche.
-
PySide6 est proposé sous licences LGPLv3, GPLv2, GPLv3 et commerciale Qt. La possibilité de distribuer une application propriétaire sous LGPL dépend du respect des obligations de cette licence.
-
Certains modules Qt ne sont pas proposés sous LGPL. Les licences des modules réellement utilisés doivent donc être vérifiées avant distribution.
-
La licence commerciale constitue une alternative, notamment pour les projets qui ne souhaitent pas ou ne peuvent pas respecter les obligations des licences open source applicables.
-
Les wheels PyPI embarquent déjà les bibliothèques Qt nécessaires. Installer séparément Qt n’est généralement pas nécessaire pour une installation standard.
-
Le thread principal doit rester disponible pour la boucle d’événements de l’interface. Les traitements lourds doivent être organisés de manière à ne pas bloquer l’application.
-
Les applications distribuées peuvent être relativement volumineuses, car elles embarquent Python, Qt et les modules nécessaires.
-
Le support Android nécessite une chaîne de compilation spécifique et reste plus complexe que le packaging desktop.
-
Le support iOS arrive avec la génération PySide6 liée à Qt 6.12. Cette première implémentation comporte encore plusieurs limitations et n’est pas utilisée comme plateforme stable de référence dans cette fiche.
-
Le format
.pyprojecthistorique est déprécié. Les nouveaux projets doivent privilégierpyproject.toml. -
Les mises à jour de Qt peuvent modifier les plateformes, modules ou conditions de licence disponibles. Elles doivent être vérifiées avant une mise à niveau importante.