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 :

Suivi de la progression lors de l'extraction d'un ZIP et mise en lignne


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Par défaut Suivi de la progression lors de l'extraction d'un ZIP et mise en lignne
    Bonjour,

    Je voudrais savoir si la lib zipfile permet de faire un suivi de progression avec PyQt/PySide ?

    Lorsque j'extrais un ZIP je voudrais avoir le suivi sur une progress bar le tout dans un thread bien entendu .

    Par la même occasion, si la lib permet "d'emiter" l'extraction, on peut combiner sur la même progress bar, premièrement l'extraction du zip et une fois à 100% relancer un thread qui upload l'extraction sur un FTP et donc repartir de 0 à 100% sur la progress bar ?

    PS : À chaque fois que je me lance dans les thread avec progress bar c'est toujours la partie que j'ai du mal à comprendre, et je ne l'a comprend toujours pas . À chaque fois on dirait que la lib que j'utilise ne permet pas de faire un thread + progress bar, quelque soit le langage que j'utilise (j'utilise toujours des lib qui n'emit rien on dirait lol)

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Sur le plan du principe, PyQt4-Qt4 n'est pas "thread-safe" (comme beaucoup d'autres bibliothèques graphiques). Cela veut dire qu'un thread ne doit pas toucher directement au graphique. Même si ça marche de temps en temps, c'est une cause courante de plantage difficile à comprendre.

    Par contre, il est facile de faire fonctionner une barre de progression: si on utilise pour le thread un descendant de QThread, ce thread peut envoyer des signaux au programme principal (emit), et c'est lui qui met à jour la barre de progression.

    A part cela, pour qu'une opération puisse mettre à jour une barre de progression, il faut que cette opération renvoie quelque chose grâce à un "callback" pendant toute sa durée. C'est le cas avec les fonctions de téléchargement ftp.

    Mais je n'ai pas vu de callback dans les fonctions d'extraction de zipfile. On peut cependant au moins afficher une barre de progression et la faire fonctionner en "chenille". A la fin de l'extraction zip, rien n'empêche au thread d'envoyer un message de fin de zip pour que la barre de progression soit re-paramétrée pour l'opération de téléchargement ftp, cette fois avec une "vraie" progression 0=>100%.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Par défaut
    Comment peut-on donc faire fonctionner l'extraction de zipfile via une "chenille" ? En gros c'est une progression qui est fausse par rapport à l'extraction ?

    Sinon pour extraire un zip, tu connais une lib qui permet d'avoir un callback pour gérer un thread ?

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    La chenille, c'est une barre de progression qui bouge tout le temps de gauche à droite et de droite à gauche sans avoir un début ni une fin. Au lieu d'avoir un mini de 0 et un maxi de 100, les 2 sont mis à zéro. Cela dit simplement: "prenez patience: on bosse!"

    Je ne connais pas de fonction d'extraction zip qui pourrait alimenter une progression, mais à vrai dire, je n'en ai jamais cherché. Peut-être quelqu'un d'autre en connait?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Par défaut
    Donc il faudrait que je lance cette barre de progression dans un thread de l'appel de zipfile.ZipFile.extractall(...) ?

    Tu aurais un exemple à tout hasard ? Tout les exemples que je trouve (quelque soit le langage) c'est une boucle for de 0 à 100, je trouve l'exemple pas super explicite lorsque l'on veut l'adapter à notre code.

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Ok: je te fais ça demain matin. Ce sera en Python 3 et PyQt4, mais c'est assez facile à convertir si nécessaire.

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

Discussions similaires

  1. Problème lors de l'extraction d'une sous-chaîne
    Par keul85 dans le forum Débuter
    Réponses: 4
    Dernier message: 31/01/2008, 20h58
  2. Problème de colonne lors de l'extraction en PDF
    Par fantagaro dans le forum Cognos
    Réponses: 6
    Dernier message: 25/10/2007, 09h47
  3. Réponses: 6
    Dernier message: 29/05/2007, 17h41
  4. Afficher les colonnes lors d'une extraction oracle
    Par griese dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 08/12/2006, 16h20
  5. [ADO] Progression lors d'un traitement
    Par portu dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/11/2004, 10h06

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