Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création d'un logiciel scientifique avec GUI

(besoin de conseils car pas d'expérience dans les GUIs

Sujet résolu
    18 février 2020 à 15:41:43

    Tout d'abord bonjour à tous :)

    Je me présente je suis Antoine, lycéen en fin de Terminale S. Depuis plusieurs mois déjà, je me suis attelé à la construction d'un logiciel scientifique en Python. De ce fait, j'ai déjà codé grâce à Python une grande partie de mon projet : les outils fonctionnent à merveille, mais le seul bémol est que l'ensemble fonctionne en "ligne de commande", c'est à dire que j'ai recours à un terminal créé par mes soins pour  accéder aux outils. Conséquence : l'entrée des paramètres à prendre en compte n'est pas aisée ni agréable; et puisque je souhaite rendre ce logiciel public à la fin de sa conception, je souhaiterais qu'il soit agréable et facile à utiliser (ce qui n'est pas le cas maintenant...:()

    C'est pourquoi je me tourne vers vous pour savoir si vous pourriez me conseiller un moyen de développer une interface graphique à graphismes agréables si possible, à laquelle je puisse incorporer mon code Python.

    Merci par avance. :)

    Antoine

    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2020 à 15:48:47

      Salut,

      il me semble que le module consacré est tkinter. Cela dit, tu peux utiliser PySide ou PyQt qui sont deux portages du framework C++ Qt en Python.

      • Partager sur Facebook
      • Partager sur Twitter

      Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

        18 février 2020 à 16:32:36

        En effet la bibliothèque tkinter est fournie avec Python, elle est relativement facile à prendre en main mais ne permet pas de faire tout ce que tu veux et dispose de graphismes vieillots.

        Il existe plusieurs bibliothèques tierces, à toi de choisir celle qui te convient le mieux.

        Toujours est il que la programmation avec interface graphique utilise un concept de boucle d’événements et va surement t'imposer de réécrire tout ou partie de ce que tu as déjà fait pour pouvoir le faire fonctionner.

        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2020 à 17:07:36

          Bonjour,

          Une possibilité relativement adaptée serait certainement PyQt ou PySide comme l'a dit Nozio. Cependant si tu envisages de redistribuer ton logiciel et que tu ne souhaites pas payer une licence une petite fortune, tu devras distribuer le logiciel sous licence LGPL (open source) (ce qui selon moi est une très bonne chose)

          Je pourrai diverger pendant des heures sur les thématiques des logiciels open source et libres mais succinctement, dans les sciences, je trouve que c'est une démarche qui devrait être systématique de proposer ses outils de la manière la plus libre possible.

          A noter cependant que si ton logiciel est prédisposé à tracer des courbes ou ce genre de choses, renseignes toi aussi sur la compatibilité de la bibliothèque que tu comptes utiliser avec des outils permettant ce genre de choses facilement (je pense par exemple à Matplotlib)

          • Partager sur Facebook
          • Partager sur Twitter
            20 février 2020 à 11:23:43

            Nozio a écrit:

            Salut,

            il me semble que le module consacré est tkinter. Cela dit, tu peux utiliser PySide ou PyQt qui sont deux portages du framework C++ Qt en Python.

            Salut Nozio. Tout d'abord, merci pour ta réponse. En effet lors de recherches sur Internet au préalable, j'avais vu que l'on parlait de PySide et de PyQt. Il me semble même que tu étais intervenu dans un autre topic pour parler de ces deux bibliothèques. En ce qui concerne tkinter, que j'avais déjà expérimenté, je me suis vite rendu compte que ce n'était pas ce que je recherchais, même s'il s'agissait de l'outil le plus simple en apparence qui me permettait de créer ma GUI. Les graphismes ne me plaisaient pas du tout et étaient trop vielliots et les performances ne correspondaient pas au logiciel que je voulais créer.

            Pour revenir au PySide ou au PyQt, j'aimerais avoir ton avis personnel sur les graphismes, et sur leur simplicité de structure (j'entends par la leur ressemblance avec le langage Python). J'aimerais que mon logiciel soit le plus user-friendly possible et qu'il soit dynamique.

            Jojuss a écrit:

            En effet la bibliothèque tkinter est fournie avec Python, elle est relativement facile à prendre en main mais ne permet pas de faire tout ce que tu veux et dispose de graphismes vieillots.

            Il existe plusieurs bibliothèques tierces, à toi de choisir celle qui te convient le mieux.

            Toujours est il que la programmation avec interface graphique utilise un concept de boucle d’événements et va surement t'imposer de réécrire tout ou partie de ce que tu as déjà fait pour pouvoir le faire fonctionner.


            Merci de ta réponse Jojuss. Je me doutais en effet que la programmation d'une GUI impliquait de tout réécrire, mais je me dis que du fait que je possède déjà la logique qui m'a permis de créer le logiciel en ligne de commande, il sera beaucoup moins compliqué de réécrire l'ensemble dans un programme de GUI, car j'aurais déjà la structure. Concernant toujours tkinter, je trouve comme toi que c'est l'alternative la plus simple, mais les graphismes sont décidément beaucoup trop vieillots et nuiraient au confort de l'utilisateur.

            Cypher__ a écrit:

            Bonjour,

            Une possibilité relativement adaptée serait certainement PyQt ou PySide comme l'a dit Nozio. Cependant si tu envisages de redistribuer ton logiciel et que tu ne souhaites pas payer une licence une petite fortune, tu devras distribuer le logiciel sous licence LGPL (open source) (ce qui selon moi est une très bonne chose)

            Je pourrai diverger pendant des heures sur les thématiques des logiciels open source et libres mais succinctement, dans les sciences, je trouve que c'est une démarche qui devrait être systématique de proposer ses outils de la manière la plus libre possible.

            A noter cependant que si ton logiciel est prédisposé à tracer des courbes ou ce genre de choses, renseignes toi aussi sur la compatibilité de la bibliothèque que tu comptes utiliser avec des outils permettant ce genre de choses facilement (je pense par exemple à Matplotlib)

            Salut Cypher. Encore une fois merci beaucoup pour ta réponse. En ce qui concerne les licences de produits sur de tels logiciels (scientifiques), je suis entièrement d'acord avec toi et il n'y a pas à tergiverser mon logiciel sera open-source, c'est certain. De plus, j'ai été checker si je puis dire, les bibliothèques Matplotlib, mais elles ne s'integrent pas bien aux designs de mon logiciel, ou alors je les utilise mal.

            PascalOrtiz a écrit:

            Que fait ton logiciel scientifique ?


            Salut PascalOrtiz. En fait, suite à une découverte des logiciels de mon lycée cette année, je me suis rendu compte que ceux-ci étaient très incomplets, peu fonctionnels et incroyablement vieillots; c'est pourquoi je me suis mis en tête la conception d'un logiciel qui regrouperait toutes les connaissances scientifiques  que l'on a jusqu'aujourd'hui. Cela passerait par des méthodes de calcul mathématique, du calcul formel, jusqu'au molécules, les ondes, les trajectoires,etc... (et la liste est excessivement longue; mais j'irai jusqu'au bout du projet !!! :)). Bien évidement, lorsque la première version sera finalisée, je l'enrichirai au fil du temps et de ce que j'apprendrai pour donner le logiciel le plus complet possible. J'ai pour ambition que ce logiciel permette à des particuliers comme à des professionnels des simulations physiques et chimiques pointues (j'inclurais notamment un outil qui permettra de construire les molécules choisies, et qui prendra en compte de nombreux paramètres, tels que les interactions électromagnétiques, doublets non-liants, répartition des charges dans la molécule,...). Bref, un grand nombre  de choses.

            Merci à tous pour vos réponses éclairées et je vous souhaite une bonne fin de journée. Nozio, si possible pourrais tu m'éclairer un peu sur le langage Julia stp? Je l'ai téléchargé et je me demande s'il ne pourrait pas me faciliter la tâche dans la conception de mon logiciel.

            Antoine



            • Partager sur Facebook
            • Partager sur Twitter
              20 février 2020 à 11:39:10

              Antoine Fotius a écrit:

              PascalOrtiz a écrit:

              Que fait ton logiciel scientifique ?


              Salut PascalOrtiz. En fait, suite à une découverte des logiciels de mon lycée cette année, je me suis rendu compte que ceux-ci étaient très incomplets, peu fonctionnels et incroyablement vieillots; c'est pourquoi je me suis mis en tête la conception d'un logiciel qui regrouperait toutes les connaissances scientifiques  que l'on a jusqu'aujourd'hui. Cela passerait par des méthodes de calcul mathématique, du calcul formel, jusqu'au molécules, les ondes, les trajectoires,etc..


              Vaste programme ! Donc Tkinter ne te conviendra pas du tout. L'alternative c'est Pyside2 mais vu ton projet à caractère pédagogique, je ne te conseille pas un  logiciel Desktop mais plutôt une application web c'est beaucoup plus adapté pour la visualisation,  la qualité de l'interface utilisateur, l'universalité, la pérennité, la collaboration et tu auras une bien meilleure visibilité.
              • Partager sur Facebook
              • Partager sur Twitter
                20 février 2020 à 11:47:34

                Pour ce qui est de Julia, c'est un langage récent (la v1.0 est arrivée fin 2018) pensé pour le calcul scientifique. Difficile de te faire une synthèse dessus, donc je te renvoie au site officiel pour les détails. Cela dit, tu risques de tomber sur l'expression Looks like Python, feels like Lisp, runs like Fortran. Mon conseil est que tu devrais rester sur le Python pour l'instant.

                Pour ce qui est de PyQt/PySide, tu peux te faire une idée de ce qui est possible grâce aux exemples de la documentation ici. Pour info, VLC utilise Qt. 

                • Partager sur Facebook
                • Partager sur Twitter

                Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

                  20 février 2020 à 15:00:58

                  Ayant aussi l'objectif de développer un logiciel scientifique, je me suis lancer dans une petit app sous PyQt5 pour me faire la main et de mon ressenti c'est vraiment très bien conçu et très permissif, tu peux quasiment faire ce que tu veux que ce soit en terme de fonctionnalités ou de design.

                  La doc Qt est très fournie et très bien détaillée pour peu que tu comprennes l'anglais et te sera d'une grande aide si tu te lance là dedans.

                  Je n'y connais rien en développement web mais la solution de Pascal est surement un autre axe de développement intéressant.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 février 2020 à 16:30:58

                    Les notebooks Jupyter peuvent éventuellement être une solution.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

                      20 février 2020 à 17:42:09

                      Je te conseille aussi de créer un site web plutôt qu'une application Windows.

                      La diffusion sera bcp plus importante mais tu devras faire du javascript pour l'interface utilisateur qui semble assez complexe.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 février 2020 à 19:09:01

                        tsez a écrit:

                        Je te conseille aussi de créer un site web plutôt qu'une application Windows.

                        La diffusion sera bcp plus importante mais tu devras faire du javascript pour l'interface utilisateur qui semble assez complexe.


                        La diffusion d'une interface web si elle permet une plus grande diffusion peut rendre compliqué l'utilisation dans le cadre de certains collèges ou lycées disposant de peu de connexion internet par exemple. Ou même dans le cadre d'une utilisation personnelle régulière, il est plus simple et agréable d'avoir un logiciel résident que l'on peut garder ouvert sans nécessairement avoir une connexion internet. Ce sont des choix à faire.

                        Un logiciel résident permettra aussi une gestion de projets plus facile et aisée que ne le ferait une application web.

                        On pourrait aussi imaginer une architecture serveur-client qui pourrait tourner en local comme le fait un jupyter notebook (c'est l'exemple le plus simple qui m'est venu à l'esprit mais petit coup de gueule au sujet de son ergonomie déplorable) ou sur un serveur web donc disponible sur un réseau. Mais on commence à rentrer dans des systèmes complexes qui nécessitent d'être mûrement réfléchis et bien conçus.

                        Et si tu as conçu ton programme de manière à avoir un espèce de moteur de calcul utilisable indépendamment d'une interface graphique (ce qui est le cas si j'ai bien compris) tu devrais à la fois pouvoir créer une interface web et un logiciel desktop si tu tiens aux deux.

                        Pour ce qui est de mon avis (et uniquement mon avis personnel) un logiciel desktop est plus agréable à utiliser. La nécessité d'une connexion à internet permanente m'exaspère, d'autant plus lorsque c'est lié à un travail potentiellement important et que la connexion de l'usager n'est pas stable et qu'une application mal conçue peut amener une perte de données. Sans compter l'obligation d'avoir des serveurs tournant en permanence et suffisamment puissants pour potentiellement mener des calculs complexes pour plusieurs utilisateurs. Alors que dans le cas d'une application desktop, ce problème n'intervient pas.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 février 2020 à 0:10:36

                          PascalOrtiz a écrit:

                          Antoine Fotius a écrit:

                          PascalOrtiz a écrit:

                          Que fait ton logiciel scientifique ?


                          Salut PascalOrtiz. En fait, suite à une découverte des logiciels de mon lycée cette année, je me suis rendu compte que ceux-ci étaient très incomplets, peu fonctionnels et incroyablement vieillots; c'est pourquoi je me suis mis en tête la conception d'un logiciel qui regrouperait toutes les connaissances scientifiques  que l'on a jusqu'aujourd'hui. Cela passerait par des méthodes de calcul mathématique, du calcul formel, jusqu'au molécules, les ondes, les trajectoires,etc..


                          Vaste programme ! Donc Tkinter ne te conviendra pas du tout. L'alternative c'est Pyside2 mais vu ton projet à caractère pédagogique, je ne te conseille pas un  logiciel Desktop mais plutôt une application web c'est beaucoup plus adapté pour la visualisation,  la qualité de l'interface utilisateur, l'universalité, la pérennité, la collaboration et tu auras une bien meilleure visibilité.

                          Salut Pascal ! En effet je me suis lancé dans un projet fort étendu, mais je compte vraiment atteindre mon objectif. Malgré la visibilité qu'une application web pourrait me garantir, je préfère un logiciel Desktop car il me permet d'utiliser uniquement les ressources à disposition (càd pas un serveur qui tourne h24) et il ne nécéssite pas de connexion à Internet. Alors même si la visualisation sembley être meilleure, je choisis l'alternative d'une appli Desktop (à voir dans le futur si je développe le logiciel web ;))

                          Nozio a écrit:

                          Pour ce qui est de Julia, c'est un langage récent (la v1.0 est arrivée fin 2018) pensé pour le calcul scientifique. Difficile de te faire une synthèse dessus, donc je te renvoie au site officiel pour les détails. Cela dit, tu risques de tomber sur l'expression Looks like Python, feels like Lisp, runs like Fortran. Mon conseil est que tu devrais rester sur le Python pour l'instant.

                          Pour ce qui est de PyQt/PySide, tu peux te faire une idée de ce qui est possible grâce aux exemples de la documentation ici. Pour info, VLC utilise Qt.

                          Merci beaucoup pour ta réponse Nozio ! En ce moment je découvre vite fait Julia et ça me plaît beaucoup. Malheureusement, je pense que je vais suivre tes conseils et délaisser ce langage pour me concentrer d'avantage sur mon projet. Indépendamment, je trouve que Julia est très bien conçu et qu'il mériterait plus de visibilité.

                          Jojuss a écrit:

                          Ayant aussi l'objectif de développer un logiciel scientifique, je me suis lancer dans une petit app sous PyQt5 pour me faire la main et de mon ressenti c'est vraiment très bien conçu et très permissif, tu peux quasiment faire ce que tu veux que ce soit en terme de fonctionnalités ou de design.

                          La doc Qt est très fournie et très bien détaillée pour peu que tu comprennes l'anglais et te sera d'une grande aide si tu te lance là dedans.

                          Je n'y connais rien en développement web mais la solution de Pascal est surement un autre axe de développement intéressant.

                          Entre les différentes possibilités que j'avais, j'ai préféré choisir le PySide2 au PyQt5 car je pensais que je n'aurais pas trop à sortir de ma zone de confort Python. A mon avis, ces deux issues sont très semblables et pourront donner des résultat très concluants. En tous les cas, je te souhaite bon courage dans la réalisation de ton logiciel scientifique. Sur quoi porte-t-il ? Bonne continuation !:lol:

                          Nozio a écrit:

                          Les notebooks Jupyter peuvent éventuellement être une solution.

                          J'y ai pensé mais ma faible connaissance du sujet m'a fait dire que ça allait être galère. Pas que je sois borné aux limites de ma sphère en Python, mais j'évite de dilapider temps et énergie dans des essais qui seront probablement infructueux. En tout cas merci pour la proposition ! :D

                          tsez a écrit:

                          Je te conseille aussi de créer un site web plutôt qu'une application Windows.

                          La diffusion sera bcp plus importante mais tu devras faire du javascript pour l'interface utilisateur qui semble assez complexe.

                          Salut tsez, comme je l'ai dit à Pascal tout à l'heure, malgré que l'aspect web du logiciel me tente fort, de nombreux paramètres me freinent. J'ai déjà touché au Javascript du bout des doigts, mais il se pourrait qu'il s'agisse également d'un frein au développement de ce logiciel sur Internet de ma part. Toutefois je te remercie de la proposition !

                          Cypher__ a écrit:

                          tsez a écrit:

                          Je te conseille aussi de créer un site web plutôt qu'une application Windows.

                          La diffusion sera bcp plus importante mais tu devras faire du javascript pour l'interface utilisateur qui semble assez complexe.


                          La diffusion d'une interface web si elle permet une plus grande diffusion peut rendre compliqué l'utilisation dans le cadre de certains collèges ou lycées disposant de peu de connexion internet par exemple. Ou même dans le cadre d'une utilisation personnelle régulière, il est plus simple et agréable d'avoir un logiciel résident que l'on peut garder ouvert sans nécessairement avoir une connexion internet. Ce sont des choix à faire.

                          Un logiciel résident permettra aussi une gestion de projets plus facile et aisée que ne le ferait une application web.

                          On pourrait aussi imaginer une architecture serveur-client qui pourrait tourner en local comme le fait un jupyter notebook (c'est l'exemple le plus simple qui m'est venu à l'esprit mais petit coup de gueule au sujet de son ergonomie déplorable) ou sur un serveur web donc disponible sur un réseau. Mais on commence à rentrer dans des systèmes complexes qui nécessitent d'être mûrement réfléchis et bien conçus.

                          Et si tu as conçu ton programme de manière à avoir un espèce de moteur de calcul utilisable indépendamment d'une interface graphique (ce qui est le cas si j'ai bien compris) tu devrais à la fois pouvoir créer une interface web et un logiciel desktop si tu tiens aux deux.

                          Pour ce qui est de mon avis (et uniquement mon avis personnel) un logiciel desktop est plus agréable à utiliser. La nécessité d'une connexion à internet permanente m'exaspère, d'autant plus lorsque c'est lié à un travail potentiellement important et que la connexion de l'usager n'est pas stable et qu'une application mal conçue peut amener une perte de données. Sans compter l'obligation d'avoir des serveurs tournant en permanence et suffisamment puissants pour potentiellement mener des calculs complexes pour plusieurs utilisateurs. Alors que dans le cas d'une application desktop, ce problème n'intervient pas.

                          Enfin Cypher ! Je suis incroyablement d'accord avec toi, et toutes les raisons que tu énumères dans ton post sont également celles qui me poussent à développer le logiciel version bureau. En effet, de nombreuses personnes ont pu me voir exaspéré par le besoin de réseau internet pour accéder à des applications, et c'est la raison (majoritaire) pour laquelle mon application sera Desktop. Encore une fois je te rejoins sur tout ce que tu as dit dans ton post et merci pour ton intervention ! ^^:p

                          En tous les cas, je vous remercie tous chaleureusement pour tous vos bons conseils et avis que vous avez pu me donner. Grâce à vous je vais enfin pouvoir donner de l'eau à mon moulin, dans l'espoir d'aboutir à un logiciel qui sera utile à tous. Je laisse ce post ouvert encore quelques temps mais il me semble que votre aide précieuse a porté ses fruits et est tombée dans une oreille. Si vous êtes intéressés par le projet, que vous êtes sur de quelconques réseau et que vous désirez que je vous tienne au courant de l'avancement, dites le moi ce sera avec plaisir que je vous informerai.

                          Merci beaucoup à tous !!! :)

                          Antoine













                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 mars 2020 à 22:29:50

                            Bonsoir,

                            Même si ça fait un peu de temps, si nous avons pu t'aider, tant mieux ^_^ Je t'invite à passer ce sujet en résolu.

                            Et par rapport au développement de ton application, si tu souhaite créer un projet open source, je t'invite à te renseigner sur un gestionnaire de version qui te sera très utile lors du développement (typiquement "git" pour prendre un outil avec une forte notoriété) et à l'associer à un hébergeur comme gitlab (ou github).

                            Cette solution, outre le fait qu'elle te donnera accès à ton code source sur plusieurs machines tout en le versionnant, te permettra de potentiellement profiter de l'aide de personnes qui seraient intéressées par le projet et de quelques fonctionnalités sympathique un peu longues à énumérer ici.

                            Bon courage et bonne soirée :)

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Création d'un logiciel scientifique avec GUI

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown