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 :

Afficher une QProgressDialog immédiatement


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut Afficher une QProgressDialog immédiatement
    Bonsoir,

    je voulais afficher une QProgressDialog dans une fonction qui télécharge un petit fichier et teste la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
            Progression = QProgressDialog("Test of the connection...", None, 0, 6, self)
            Progression.setMinimumDuration(0)
            Progression.show()
            Progression.setValue(1)
     
            ### Sert à tester la connexion internet
            opener = build_opener()
            opener.addheaders = [('User-agent', 'Mozilla/5.0')]
     
            # Test la connexion à google, donc la connexion générale
            try:
                opener.open("http://google.com", None , 5)
            except:
                Progression.setLabelText("Error with the test of the connection...")
                Progression.setValue(0)
                return
     
            ...
    Le soucis, c'est que la fenetre ne s'affiche, en gros, qu'apres le test.
    Donc on perd quelques secondes.

    Mais si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Progression = QProgressDialog("Test of the connection...", None, 0, 6, self)
            Progression.setMinimumDuration(0)
            Progression.show()
            Progression.setValue(1)
            return
    la fenêtre apparaît immédiatement...

    comment faire en sorte d'attendre que la fenetre soit visible avant de continuer ?

    j'ai voulu utiliser isVisible mais il me dit qu'elle est visible alors que ce n'est pas encore le cas...

    Une idée ?

    Merci.
    Sous Kubuntu 20.04

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    La fonction qui crée la QDialog et effectue le test est un callback i.e. une opération lancée suite à un événement traité par le GUI.
    Tant que ce callback ne rend pas la main au GUI, il ne pourra pas effectuer les mises à jour de l'affichage.
    Le truc est de le forcer à le faire à l'intérieur du callback via un appel a app.processEvents()
    app = votre QApplication.

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Cool, merci beaucoup


    Et sinon, c'est moi qui ai mis l'intitulé "important" au topic ?
    Sous Kubuntu 20.04

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

Discussions similaires

  1. [MFC] afficher une ProgressBar dans une barre d'etat
    Par guillaume21 dans le forum MFC
    Réponses: 5
    Dernier message: 30/03/2007, 11h16
  2. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13
  3. Afficher une valeur du context
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 13
    Dernier message: 28/04/2003, 13h49
  4. Afficher une buffer de pixel avec Direct3D
    Par Black_Daimond dans le forum DirectX
    Réponses: 4
    Dernier message: 27/12/2002, 22h18
  5. Copier et afficher une copie d'ecran
    Par Bobx dans le forum Langage
    Réponses: 6
    Dernier message: 02/08/2002, 22h20

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