Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Qt 6 et Python


Sujet :

PyQt Python

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    24 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 24 684
    Points : 166 226
    Points
    166 226
    Par défaut Qt 6 et Python
    PySide continuera son évolution avec Qt 6,
    avec une API plus proche des normes de Python et une meilleure intégration à l'écosystème Python

    En cette période de définition de Qt 6, il était étonnant de n'avoir pas encore eu de détails sur sa déclinaison Python. On parle bien ici de PySide, la couche d'accès sous licence LGPL (ou commerciale) dont le développement est pris en charge par la Qt Company, pas PyQt, son équivalent historique sous licence GPL (ou commerciale). À l'origine, la seule raison d'être de PySide était ce différend sur la licence. L'histoire de PySide n'a pas été un long fleuve tranquille : le projet avait été lancé par Nokia et a bien avancé du temps de Qt 4, puis n'a pas su faire la mise à jour vers Qt 5 (notamment suite à des problèmes de financement d'OpenBossa et au rachat de Qt par Digia…).
    Après quelques années, des développeurs indépendants sont arrivés à faire fonctionner PySide, mais sans support ni infrastructure pérenne. La Qt Company a finalement décidé de reprendre le projet sous son aile pour en assurer le développement. Depuis lors, les versions de PySide s'enchaînent et suivent de très près les versions de Qt : avec Qt 6, la synchronisation devrait être parfaite, l'édition Python devant être développée en parallèle avec l'API C++ et Qt Quick.

    Vers quoi Qt pour Python devrait-il évoluer ? La compatibilité avec PyQt a été un point majeur pour en faciliter l'adoption, à quelques éléments mineurs près : PyQt 4 exposait QVariant explicitement (ce qui ne correspond pas du tout aux habitudes en Python), PyQt 5 l'a relégué en second plan, PySide l'a complètement éliminé (PySide effectue les traductions nécessaires entre les objets Python et les instances de QVariant). PySide a un public double : d'un côté, ceux qui viennent du C++ et apprécient la facilité de Python pour prototyper des applications fonctionnelles ou embarquer des extensions créées par l'utilisateur (comme Maya) ; de l'autre, les développeurs Python, qui apprécient disposer d'un environnement moderne et robuste de développement d'interfaces graphiques (Python fournissant la plupart des fonctionnalités de Qt). PySide utilise notamment la bibliothèque Shiboken pour créer des modules Python faisant appel à des fonctions C++, elle est utilisée par des projets complètement extérieurs à Qt.

    Avec Qt 6, on ne parlera pas de PySide 3, comme on pourrait s'y attendre : le nom suivra les versions de Qt, on parlera donc de PySide 6. Python 2 disparaîtra complètement des plateformes gérées : cette version ne disposera plus d'aucun support dans un peu plus de quatre mois, cela n'a plus de sens de continuer à s'en occuper. Shiboken continuera à être développé, à gagner en maturité (notamment pour la gestion des pointeurs intelligents) et en facilité d'utilisation pour des projets extérieurs à Qt : les deux points principaux identifiés pour le moment sont la complexité de créer un projet de zéro (il faut un énorme CMakeLists pour un projet basique) et le besoin de recompiler shiboken_generator.

    PySide expose une API très proche de Qt en C++. Cela facilite le passage d'un langage à un autre, mais déroute ceux qui n'utilisent que Python et pas C++. Par exemple, les noms de méthode suivent les conventions de Qt, pas celles de Python ; pour démarrer une application, il faut utiliser la méthode exec_, à rapprocher de exec en C++, mais exec est une fonction de base de Python qui ne peut pas être redéfinie (les développeurs pensent plutôt utiliser execute). De plus, on pourrait voir les annotations de type (PEP 484) arriver dans PySide, pour faciliter l'analyse des types (par exemple, par les environnements de développement). Les propriétés de Python ne se marient pas très bien avec celles de Qt : au lieu d'utiliser des propriétés, avec PySide, on doit utiliser des méthodes, ce qui complexifie légèrement le code à écrire (label.setAlignment(…) au lieu de label.alignment = …). Aussi, l'installation de PySide prend du temps, puisque tous les modules sont installés d'un coup : plusieurs paquets pip devraient être mis à disposition avec PySide 6, le niveau de granularité n'étant pas encore défini. Ceci pourrait devenir utile pour déployer des applications PySide sur des périphériques embarqués, comme sur un Raspberry Pi.

    Au niveau des outils, pour le moment, PySide, tout comme PyQt, ne permet pas d'utiliser directement rcc ou uic (pour la précompilation des fichiers de traduction ou d'interface) : il faut utiliser pyside2-rcc et pyside2-uic pour générer des fichiers que PySide peut utiliser. Tant rcc que uic sont en train d'être améliorés pour qu'il n'y ait plus besoin de versions particulières pour Python. Ce travail devrait déjà être disponible pour Qt 5.14, prévu en novembre de cette année.

    Côté Qt Quick, l'API Python souffre de quelques défauts, principalement dus à des limitations des API privées, comme l'impossibilité d'enregistrer des types non instanciables ou la limite à cinquante types qu'on peut exporter depuis un module Qt Quick. Ces limites devraient être levées pour PySide 6.

    Du côté des nouvelles fonctionnalités, PySide 6 devrait faciliter le développement très rapide d'interfaces, avec des widgets de très haut niveau et prêts pour l'utilisation, sans devoir écrire des lignes et des lignes de code (comme dans le module Qt Chart, avec l'objet Series et le remplissage de vues). Ces widgets devraient s'intégrer avec les modules Python existants, comme Pandas ou NumPy. C'est probablement l'aspect le plus révolutionnaire prévu pour PySide 6 : PySide ne se limiterait plus à donner accès à Qt depuis Python, mais s'intégrerait vraiment dans l'écosystème Python.

    Source : Technical vision for Qt for Python.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre habitué Avatar de Narann
    Inscrit en
    juin 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 138
    Points : 189
    Points
    189
    Par défaut
    Un grand merci pour ce résumé !

  3. #3
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    1 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 1 449
    Points : 3 130
    Points
    3 130
    Par défaut
    Pourquoi parler de "PySide" plutôt que de "Qt for Python" ? Le second terme n'est-il pas censé remplacer le premier ?
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    24 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 24 684
    Points : 166 226
    Points
    166 226
    Par défaut
    Oui et non, vu qu'on importe toujours un PySide2.QtWidgets et que seul PySide2 est dans PyPI, par exemple.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2015
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Merci pour l'information.
    Est ce qu'on peut s'attendre à une version PyQt6 ?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    24 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 24 684
    Points : 166 226
    Points
    166 226
    Par défaut
    Sûrement ! PyQt continue toujours son développement et c'est, peu ou prou, le seul produit de Riverbank.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. [langage] traduction d'un fonction python en perl
    Par ay_pepito dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2007, 15h06
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo