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

GUI Python Discussion :

GUI Python vs ? -> Besoin de conseils


Sujet :

GUI Python

  1. #1
    Membre à l'essai
    GUI Python vs ? -> Besoin de conseils
    Bonsoir,

    Dans le cadre d'un projet professionnel que je dois mettre en place, je m'interroge sur le langage à utiliser pour la partie cliente.
    Pour faire simple, coté client le programme n'est pas très complexe (pas beaucoup de fonctionnalités, très peu de ligne de codes quelques centaines tout au plus) mais doit être :
    - Facilement exécutable (dans le sens "installable rapidement et silencieusement" )
    - Utilisable au moins sur Windows, Macos & Linux

    Jusqu'ici, je n'ai jamais réellement fait de GUI avec Python, mais comme c'est le langage que j'utilise le plus depuis quelques temps, et que la partie serveur sera en partie écrite en Python, je me pose les questions suivantes :
    - wxPython (qui serait pour l'instant mon premier choix ?) est-il vraiment "stable" ? Tout du moins assez pour un environnement de production ?
    - Si non, y a t-il des framework qui le sont ?
    - Pour ce qui est du déploiement facile et rapide, que valent les petites choses comme py2exe ou pyinstaller (qui à l'air d'être assez "à jour") ?


    Sinon, pensez-vous qu'il serait plus simple de créer ces GUI clientes en C++ pour vraiment gagner en robustesse/stabilité ?
    wxWidgets par exemple, est-il de base assez robuste en C++ pour être utilisé en production ?

    PS: Je ne peux pas utilisé QT pour ce projet, les licences commerciales étant un poil trop cher pour ce petit projet modeste ^^

    Merci d'avance pour vos réponses, j'ai essayé de faire un peu le tour de différents forums et autres vidéos, mais les avis sont partagés et/ou souvent assez anciens et je me dis qu'après plusieurs années certains avis négatif ne sont peut être plus d'actualités !
    Bonne soirée.

  2. #2
    Expert éminent
    Bonjour,

    Citation Envoyé par Astak Voir le message
    PS: Je ne peux pas utilisé QT pour ce projet, les licences commerciales étant un poil trop cher pour ce petit projet modeste ^^
    Je n'utilise que PyQt5, mais s'il y a un problème de licence, il existe aussi "Qt for Python" ("PySide2") qui a une license de type GPL => https://wiki.qt.io/Qt_for_Python. L'un des avantages de Qt est le "Designer" qui permet de dessiner des fenêtres graphiques, même complexes.

    L'avantage d'utiliser Python est qu'on a la rapidité de développement de Python en tant que langage interprété, et la rapidité d'exécution pour les tâches complexes, grâce au fait que les modules concernés sont le plus souvent écrits en C ou C++ (bibliothèques graphiques, modules scientifiques, etc...). En cas de nécessité, on peut toujours créer un nouveau module écrit en C ou C++ et destiné à être importé par Python (la doc de Python dit comment faire). On peut aussi utiliser "Cython" pour convertir un code Python en C ou C++.

    On peut convertir le code Python en exécutable autonome avec cx_freeze ou pyinstaller assez facilement, et ces 2 programmes sont multiplateformes (mais py2exe ne concerne que Windows). Bien sûr, chaque exécutable doit être fait sur chaque OS puisque les bibliothèques embarquées sont différentes. Sous Windows, on peut compléter si nécessaire avec un installeur comme innosetup. Je suppose qu'on peut aussi convertir l'exécutable en "paquet" installable pour Linux et MacOS, mais je ne l'ai jamais fait.

    Concernant la "solidité" du programme en production, en plus des tests basés sur l'exécution, j'utilise systématiquement un analyseur de code comme "PyLint" par exemple, parce que, le code étant interprété, certaines erreurs pourraient échapper à ces tests. Prenons un exemple simple:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def test(x):
        if x<0:
            print(a)
        else:
            print(x)


    Tant que l'exécution appelle la fonction avec x>=0, il n'y a aucune erreur, alors qu'on voit bien que la variable "a" est utilisée dans le print avant d'avoir été créée. Mais PyLint dira dans ce cas:

    ...\test06.py:4:14: E0602: Undefined variable 'a' (undefined-variable)
    PyLint a de plus l'avantage de pouvoir tester la qualité du code Python par rapport aux règles de type PEP8 => https://www.python.org/dev/peps/pep-0008/.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre à l'essai
    Bonjour,

    Merci pour ta réponse très rapide!

    En ce qui concerne QT, j'ai beaucoup regarder les licences sur lesquelles il repose en version gratuite (GPL et LGPL) mais ce qui m'inquiète, c'est de louper quelque chose dans les termes de ces licences qui me retombe dessus sur un projet commercial.
    C'était surtout pour ça que j'étais partis sur wxPython qui est plus permissif et qui avait l'air d'être son "concurrent" le plus proche. Hormis ceci, j'adore QT puisque c'est ce que j'utilisais le plus en c++ pour mes interfaces.


    Ok donc si je comprends bien, d'après toi tant que mon code est suffisamment "robuste et vérifié", ces frameworks (QT en tout cas) ne devraient avoir aucun problème de stabilité particulier.
    Est-ce que tu as des participé (ou juste eut connaissance) de projet commerciaux avec GUI entièrement réalisé en Python ?

  4. #4
    Expert éminent
    Citation Envoyé par Astak Voir le message

    En ce qui concerne QT, j'ai beaucoup regarder les licences sur lesquelles il repose en version gratuite (GPL et LGPL) mais ce qui m'inquiète, c'est de louper quelque chose dans les termes de ces licences qui me retombe dessus sur un projet commercial.
    Je ne suis pas concerné par les problèmes de licence, car j'ai surtout fait du développement en bénévole pour une association (40.000 lignes de code en PyQt5 pour le traitement complet d'un concours international de photos). Mais on peut trouver des infos sur les licenses sur le web. Par exemple:
    https://opensource.stackexchange.com/questions/6463/in-2018-if-i-use-c-qt-5-10-0-to-build-a-closed-source-application-requires-ope.

    Citation Envoyé par Astak Voir le message

    Ok donc si je comprends bien, d'après toi tant que mon code est suffisamment "robuste et vérifié", ces frameworks (QT en tout cas) ne devraient avoir aucun problème de stabilité particulier.
    L'avantage de Qt5, c'est qu'il est utilisé pour le bureau KDE de Linux: il dispose donc d'occasions d'application assez nombreuses pour soulever les éventuels bugs.

    D'un autre côté, en utilisant les techniques d'assurance qualité, il est sage d'aller consulter les listes de bug en cours de traitement, ainsi que les "mailing lists" pour vérifier que la version qu'on utilise n'a pas rencontré dans le domaine qu'on développe des problèmes dont il faudra se méfier.

    En ce qui me concerne, mes 10 ans de développement en PyQt se sont très bien passé, et pendant l'utilisation de mes programmes, je ne me rappelle pas avoir été en difficulté une seule fois. Mais il faut tout de même une bonne méthode de travail pour ça, pour compenser les "permissivités" de Python en tant que langage interprété. Je dis ça après avoir travaillé longtemps en Pascal, qui ne pardonnait vraiment rien...

    Citation Envoyé par Astak Voir le message

    Est-ce que tu as des participé (ou juste eut connaissance) de projet commerciaux avec GUI entièrement réalisé en Python ?
    Non, malheureusement. Mais dans l'une des pages de RiverBank (l'éditeur de PyQt5), il est dit qu'on peut poser des questions: fais-le! => https://www.riverbankcomputing.com/commercial/pyqt

    Et je te rappelle qu'il existe PySide2 qui fait la même chose que PyQt5 et qui a l'air plus permissif que PyQt5. Mais il est assez récent, et je ne l'ai pas encore utilisé.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre à l'essai
    Ok ça marche!
    De toute façon, il faut savoir prendre des risques, et puis rien ne sera perdu même si au final je n'utilise pas de bind Python pour ce projet donc autant faire confiance et essayer.

    Encore merci pour ton temps et tes réponses, passes une bonne journée

###raw>template_hook.ano_emploi###