IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

PyQt Python Discussion :

Développement d'application réactives ?


Sujet :

PyQt Python

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut Développement d'application réactives ?
    Bonjour,

    Je suis intéressé par pyside en python et je souhaiterait savoir si on peut faire avec ce framwork une applications GUI réactives.

    Merci pour vos renseignement

    Salutations et bonne année.
    Battant

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Salut,

    Citation Envoyé par Battant Voir le message
    Je suis intéressé par pyside en python et je souhaiterait savoir si on peut faire avec ce framwork une applications GUI réactives.
    Qu'appelez vous "application GUI réactive" ?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    Par exemple, avec l'api swing swing en java, il faut mettre les fenêtre dans l'edt (Event dispash tread) les commande liées à interface graphique pour que celle ci soit plus réactive.

    Qu'en est-il avec pySide ?

    Merci de votre réponse.

    Salutations
    Battant

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Salut,

    Citation Envoyé par Battant Voir le message
    Par exemple, avec l'api swing swing en java, il faut mettre les fenêtre dans l'edt (Event dispash tread) les commande liées à interface graphique pour que celle ci soit plus réactive.
    Les fenêtres probablement pas, mais les events sont traités par un dispatcher qui appelle les "callbacks" correspondants.
    Mais la plupart des GUI sont construits comme çà et Qt aussi (PySide n'est que le moyen d'utiliser Qt depuis le langage Python).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    Event dispach thread en swing correspond-il a ça en qt ?

    http://qt-project.org/wiki/Threads_Events_QObjects

    Merci pour vos Renseignements

    Salutations
    Battant

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Salut,

    l'edt de swing correspond a ce que décrit dans le chapitre "Events and the event loop" du document Qt.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    A quoi corresponde les ligne Java suivante en pyxide avec Python ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Swingutlitied.invokelater(runnable r)
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Swingutilities.invokandwaite(runnable r)
    Point de vue performance, Java et Python sont-il comparable ?

    Peut-on faire des application rapide et réactives en Python avec pyside par exemple ?

    Merci de me renseigner

    Salutations
    Battant

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par Battant Voir le message
    Peut-on faire des application rapide et réactives en Python avec pyside par exemple ?
    Je ne développe pas en java, mais j'utilise souvent des logiciels codés en java (dont Eclipse): je me rends donc bien compte de ce qu'on peut obtenir en java pour des applications graphiques.

    Par contre, je développe des logiciels en Python avec PyQt4 (très proches de PySide), et je suis très satisfait de sa rapidité. On obtient des applications de type bureautique dont la rapidité est largement suffisante pour qu'on ne sache même plus en quel langage c'est programmé.

    En effet, si Python est un langage interprété en bytecodes comme java, la bibliothèque graphique Qt4, utilisée par PyQt4 et PySide, est écrite en C++ et s'exécute en code natif: c'est très rapide

    Donc, sans parler d'applications critiques pour lesquelles le retour au C ou C++ serait nécessaire, on pourrait dire que là ou java conviendrait, Python+Qt fera au moins aussi bien.
    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

  9. #9
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut


    Citation Envoyé par Battant Voir le message
    A quoi corresponde les ligne Java suivante en PySide avec Python ?
    Sans vouloir être vexant, pourquoi un développeur Python devrait savoir ou chercher à savoir à quoi correspondent des commandes Java, surtout s'il ne panne rien au Java ...
    Personnellement je me verrai mal arriver sur un forum et dire de but en blanc : je viens de là, comment on fait ça chez vous ?

    Cette petite mise au point faite, si j'interprète bien ta demande je pense comme tyrtamos : si java sait faire, Python saura faire.... corrigez moi si je me trompe, mais Java n'est pas réputé pour être un code très rapide en termes d'exécution.
    Malgré tout si une fenêtre créée en PyQt ou PySide ne te donnait pas satisfaction dans son exécution, et je tiens à repréciser ce que wiztricks a dit : PyQt et PySide ne sont "que" des bindings, comprendre qu'ils permettent "juste" de faire le lien entre un code Pyhton et la bibliothèque Qt, alors il te reste Qt Quick exécuté depuis Python.

    Toute l'interface sera faite en QML et seule la partie logique sera faite (toute ou partie) en Python.

    ++

    J
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  10. #10
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    Les lignes Java que je vous ai montré dans mon message précédant permet d'ajouter une action à la event loop et rendre immédiatement la main au thread principal c'est donc un appel non bloquant et c'est un des principe des application réactive : envoie de message et continuer l'exécution, gérer les callbacks et notifications

    Peut-on faire cela avec PySide, PyQt ou autre ?

    Merci de me renseigner

    Salutations
    Battant

  11. #11
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonsoir,

    Le plus simple, c'est que tu regardes le code que j'ai donné pour répondre à une question sur ce forum: http://www.developpez.net/forums/d14...e/#post8109541.

    Le code est complet, fonctionne sous Python 3 et PyQt4, et il est copieusement commenté.

    A l'exécution, il vient une fenêtre avec un bouton au milieu. La fenêtre attend qu'il se passe quelque chose (boucle de traitement des évènements). On clique sur le bouton: un thread est lancé pour dézipper un gros fichier zip, avec une petite fenêtre de progression. Le programme de dézippage envoie un signal à chaque nouveau fichier dézippé pour que le programme principal puisse mettre à jour la barre de progression. Et à la fin, le thread envoie un signal de fin pour informer le programme principal que le dézippage est terminé. En plus, on peut interrompre le dézippage, ce qui arrête le thread proprement.
    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

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Salut,

    Citation Envoyé par Battant Voir le message
    Peut-on faire cela avec PySide, PyQt ou autre ?
    Dans votre réponse, vous mentionniez un document du wiki Qt qui explique cela très bien.
    Que voulez vous qu'on y ajoute?
    De toutes façons tant que vous n'allez pas essayer de coder en utilisant ces fonctionnalités, tout cela restera abstrait nébuleux.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Battant Voir le message
    Bonjour,

    Les lignes Java que je vous ai montré dans mon message précédant permet d'ajouter une action à la event loop et rendre immédiatement la main au thread principal c'est donc un appel non bloquant et c'est un des principe des application réactive : envoie de message et continuer l'exécution, gérer les callbacks et notifications

    Peut-on faire cela avec pyxidePySide, pyQtPyQt ou autre ?

    Merci de me renseigner

    Salutations
    Question : on parle de réactivité GUI ou logique ? Parce qu'en fait applications GUI réactives c'est un peu perturbant

    Au risque de passer pour un lourding qui ne comprend rien à ce qu'on demande, c'est pas ça que tu cherches : http://doc.qt.io/qt-5/qthread.html ou encore ça : http://python.developpez.com/faq/?pa...ent-les-Thread ?
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  14. #14
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    En swing, avec java, il faut mettre les commandes liée à l'interface graphique doive être placéedans le tread edt pour que l'application soit réactive. Selon la documentation en qt, il y a le thread principal appelé gui et c'est lé dedans que les commande liée au gui doivent être exécutée. je suppose qu'il y a la membre chose en pyside


    Pouvez-vous me confirmer cela et me dire comment accéder à ce thread et lui donner du code à exécuter

    voici un sujet sur les applications réactives

    http://www.developpez.net/forums/d14...stion-donnees/

    Que pensez-vous de ce sujet et comment faire ça avec pyside ?

    Merci d'avance

    Salutations
    Battant

  15. #15
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut


    Je ne sais pas si c'est la fatigue ou autre chose, mais j'ai franchement du mal à comprendre ce que tu veux faire.... ou plutôt pourquoi tu te prends autant la tête ...

    Mais avant toute chose, je te conseillerai déjà d'oublier PySide ... le projet est mort (officiellement depuis début 2015).

    Pour revenir à ton "problème" : je ne sais pas comment ça fonctionne en Java (et vu comment tu présentes les choses, ça me donne pas du tout envie de comprendre ) mais en Python (il me semblait d'ailleurs que c'était pareil dans les autres langages, mais bon je ne suis qu'un "pythonien" autodidacte) lorsque tu lances un programme, graphique ou non, tu exécutes une tâche que l'on pourra appeler tâche principale.

    Ton code va s'exécuter dans l'ordre que tu l'as écrit et certains événements vont te "propulser" vers une partie spécifique de ton code.

    Si tu veux exécuter plusieurs tâches en même temps il va te falloir passer par le multi-threading.

    Question : les notions de fonction, classe, .... en Python te sont familières ou non ??? je veux pas avoir l'air médisant, mais j'ai l'impression que tu brûles pas mal d'étape. Oui Python est un langage simple, mais faut pas abuser non plus
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Citation Envoyé par Battant Voir le message
    En swing, avec java, il faut mettre les commandes liée à l'interface graphique doive être placéedans le tread edt pour que l'application soit réactive. Selon la documentation en qt, il y a le thread principal appelé gui et c'est lé dedans que les commande liée au gui doivent être exécutée. je suppose qu'il y a la membre chose en pyside
    Ce qui s'applique à Qt s'applique aussi à PySide: c'est la même chose.
    Pour le reste, si vous voulez vous mettre sérieusement à Qt et à Python, il faudra de toutes façons oublier le folklore Java.
    C'est un peu comme parler une autre langue, vous ne la parlerez bien qu'a partir du moment ou vous serez capable de penser avec i.e. sans vouloir "traduire".
    Qt a inventé la mécanique "signal/slot". C'est une façon très originale pour expédier des messages entre threads (et construire des applications réactives) qui évite de poster une commande dans l'event-loop "directement".
    Vous trouverez aussi la méthode .postEvent pour faire à la "Java-like".

    Si vous ne comprenez pas ce qu'explique le document en plusieurs pages et bien écrit, quelles chances auront les réponses qu'on ferait ici en quelques lignes ?

    Bon courage,

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Info] [Swing] Développement d'application graphique
    Par lehic dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 05/09/2005, 15h56
  2. [Info] Eclipse est-il gratuit pour développer une application ?
    Par kaishef dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 12/04/2005, 11h04
  3. Réponses: 16
    Dernier message: 12/11/2004, 00h05
  4. [RCP] Devrais-je développer une application RCP ou un plugin ?
    Par arN34 dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 23/09/2004, 17h09

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