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 :

Progression dans la barre des tâches


Sujet :

PyQt Python

  1. #1
    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 Progression dans la barre des tâches
    Bonjour,

    Sous Windows, je vois pas mal de logiciels placer une barre de progression dans le bouton de la barre des tâches (il s'agit bien de la barre en bas de l'écran et pas celle en bas des fenêtres).

    C'est le cas, par exemple, avec le téléchargement de Firefox.

    Quelqu'un sait-il comment faire ça avec PyQt?

    Merci!
    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

  2. #2
    Membre régulier
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Amateur
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 52
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    En cherchant un peu, j'ai trouvé ce post sur StackOverflow. Je n'ai pas essayé la solution proposée.

    Bien entendu cela veut dire que cette solution ne sera pas portable.

  3. #3
    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
    Merci Dan737, je n'avais pas trouvé ce lien. C'est tout de même un sacré bidouillage...

    A force de chercher, je crois avoir trouvé une solution moins complexe et qui reste dans PyQt: la classe QWinTaskbarProgress qui fait partie d'un module spécifique Windows de Qt5: QtWinExtras. Cette classe parait exister depuis Qt v5.2.

    Il ne me reste plus qu'à essayer. Si je réussi, je mettrai un petit code ici.

    Il est vrai que c'est spécifique Windows: il faudra donc placer ce code sous un test sys.platform.

    Je laisse ce fil ouvert au cas où il y aurait d'autres idées.
    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

  4. #4
    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
    Je n'ai trouvé aucun exemple avec PyQt5 sur le web, alors j'ai fait la conversion d'un exemple en C++ Qt5, et manifestement, ça marche! Et c'est assez simple.

    Voilà comment je fais:

    Dans une classe fenêtre QtWidgets.QWidget, on met en place comme ça (il faut, bien sûr, importer QtWinExtras) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            self.tbouton = QtWinExtras.QWinTaskbarButton(self) # le self est ici l'instance de la classe fenêtre (QWidget)
            self.tbouton.setWindow(self.windowHandle())
            self.progression = self.tbouton.progress() # self.progression est de type QWinTaskbarProgress
            self.progression.setRange(0, 100) # on met le mini et le maxi des valeurs de la progression
    Pour faire apparaître la barre de progression:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            self.progression.setVisible(True)
    Pendant le déroulement de l'opération longue, on envoie l'information pour mise à jour de la barre avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            self.progression.setValue(i) # i est compris entre le mini et le maxi définis avec setRange
    A la fin, il faut faire disparaître la barre avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            self.progression.setVisible(False)
    Et c'est tout! Problème résolu ;-) .

    J'ai vérifié que ça marchait aussi après conversion en exe avec cx_freeze.
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Masquer l'application dans la barre des tâches
    Par jmjmjm dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/11/2016, 12h50
  2. Boutons doubles dans la barre des tâches
    Par miniil dans le forum Windows XP
    Réponses: 5
    Dernier message: 14/12/2005, 22h30
  3. Réponses: 7
    Dernier message: 27/10/2005, 14h24
  4. Reduire dans la barre des tâches?
    Par Zetmurin dans le forum C++Builder
    Réponses: 14
    Dernier message: 05/11/2004, 05h02

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