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 :

Barre de progression


Sujet :

PyQt Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut Barre de progression
    Bonjour,

    J'aimerais inclure une Progress Bar dans mon interface graphqiue.
    Je lui ai donné une valeur min(0) et une valeur max(100).
    J'ai plus de mal à comprendre comment la rendre 'active'.

    Le but serait le suivant : quand je lance un script, via mon interface graphique, que la progress bar me dise à combien de % le script se trouve.
    J'ai fait une connexion : lorsque je clique sur un bouton, celui-ci exécute une fonction qui change la valeur de la progress bar ( self.progressBar.setValue(val) )
    Mais rien ne se passe.. quelle fonction utiliser alors ?
    Dans certains forums, certains parlent de Thread, je ne sais pas ce que c'est et si c'est la méthode à utiliser.

    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,

    Rajoute une ligne à ton code après l'update de la progressBar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            self.progressBar.setValue(val)
            print('Progress: %s' % val)
    Puis tu nous diras ce qu'il en sort.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Ca me sort False :/

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Tu veux dire Progress: False ?

    Tu sais ce qui te reste à faire alors, enquêter sur ce val

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Oui.. J'ai mal défini val
    J'imagine qu'un progress bar ne peut pas fonctionner sans valeur mais je n'en ai pas réellement des valeurs..
    Si je lance plusieurs scripts à la fois ça devrait être bon, mais si je lance un seul script ? Sur quoi me baser pour afficher l'avancement du script ?

  6. #6
    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,

    Avec un mini et un maxi tous les 2 à 0, la barre de progression devient une "chenille" qui circule indéfiniment (jusqu'à ce qu'on l'arrête).

    C'est pratique quand on veut faire patienter l'utilisateur pendant une opération longue, mais qu'on n'a pas trouvé de valeur chiffrée de progression.
    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

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Merci! Je vais tester ça

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    La méthode de la 'chenille' est intéressante mais ne convient pas à ce que je cherche à faire :/

    Une question auxiliaire : comment faire pour lancer deux signaux en même temps ? (sous PyQt5)
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     self.bouton.clicked.connect(action1)
    self.bouton.clicked.connect(action2)
    J'ai essayé self.bouton.clicked.connect(action1, action2) mais ça ne marche pas :/

  9. #9
    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
    On peut faire exécuter la même action par plusieurs signaux, mais ça m'étonnerait qu'on puisse faire exécuter plusieurs actions avec le même signal.

    Par contre, rien n'empêche le signal en question d'exécuter une méthode qui elle-même lance l'exécution de plusieurs actions.
    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

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    rien n'empêche le signal en question d'exécuter une méthode qui elle-même lance l'exécution de plusieurs actions.
    Ah oui, bien vu! Merci

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Re !

    J'ai essayé la méthode de la 'chenille' mais ça ne marche pas tout à fait comme il faut..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                self.progressBar.setRange(0,0)
                self.progressBar.show()
     
                os.system(r' "C:\Program Files\FME\fme.exe" .........') # lancement du script
     
                QMessageBox.information(self.popup(), "Information", "Le traitement est terminé !")
                self.progressBar.setRange(0,1)
    La progress bar se met 'en marche' une fois que le traitement est terminé (os.system) et se termine losrque je ferme la fenêtre pop-up (ce qui est une bonne chose)
    Du coup, ça marche mais pourquoi pas au moment où il faudrait ?

    EDIT :

    En fait je crois que je dois faire un QThread, pour permettre aux 2 actions de s'exécuter en même temps..
    Je vais regarder comment on fait, mais si qqun a des conseils je suis preneur

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,

    La partie graphique est mise à jour lorsque le programme revient dans sa boucle d'événements. Ceci pour des raisons de performance.

    Pour que la progressBar "fonctionne" il faut généralement lancer le travail dans un thread.

    Attention, ne pas mettre la progressBar dans un thread, tu planteras inévitablement ton programme, on ne peux accéder au serveur graphique que dans le process principal.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 77
    Points : 39
    Points
    39
    Par défaut
    Tu as répondu exactement au moment où je rectifiais mon post
    Merci de confirmer ce que je pensais

Discussions similaires

  1. Indy FTP (idFTP) faire une barre de progress de transfert
    Par Harry dans le forum Web & réseau
    Réponses: 4
    Dernier message: 09/07/2004, 14h15
  2. [VB.NET] Pb avec le bouton Annuler d'1 barre de progression
    Par dada1982 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2004, 10h56
  3. Réponses: 12
    Dernier message: 27/05/2004, 01h13
  4. [DEBUTANT] Barre de progression
    Par pupupu dans le forum MFC
    Réponses: 4
    Dernier message: 18/01/2004, 17h47
  5. [web] Barre de Progression ASCII
    Par Red Bull dans le forum Web
    Réponses: 13
    Dernier message: 05/06/2003, 13h56

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