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

Python Discussion :

Action os + chargement


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut Action os + chargement
    Bonjour,
    Je créer un script pour la copie de fichier, comme certain fichier peuvent-être volumineux le programme ce bloque jusqu'a ce qu'il ai finit de faire la copie =(
    j'aimerai que pendant ce temps de bloque il affiche quelque chose comme une barre de chargement ou autre...
    Code :
    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
    19
    20
    21
    22
    23
     
    copywait()
    copycopy("file",gameloc2,"file")
     
    def copywait():
        global resultat
        time.sleep(1)
        resultat = Label(fenetre, text='Attendez...',fg='black')
        resultat.grid(row=1,column=1)
        time.sleep(1)
    def copycopy(src, dst, srcbackup):
        global resultat
        l = glob.glob(src+'\\*') 
        for i in l: 
            if os.path.isdir(i): copycopy(i, dst, srcbackup) 
            else:
                try: os.makedirs(os.path.dirname(dst + os.sep + i[len(srcbackup)+1:]))
                except: pass
                shutil.copyfile(i, dst + os.sep + i[len(srcbackup)+1:])
                try : resultat.destroy()
                except : pass
                resultat = Label(fenetre, text='Patché !',fg='green')
                resultat.grid(row=1,column=1)
    mais rien a faire il bloque quand meme

  2. #2
    Membre éprouvé
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut
    Si tu veux pouvoir faire en parallèle la copie et l'affichage d'une barre de chargement, il va falloir que tu utilise des threads.

    Regarde du côté des packages thread ou threading.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    Salut merci de ta réponse
    en utilisant les thread :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    def patcher() : #patch bouton
        global resultat
        if hostuse =="True" :
            hostedit()
            if copyFuse =="True" :
                loader.start()
                copypaste.start()
            elif copyFuse =="False" :
                print "False Copy"
        elif hostuse =="False" :
            if copyFuse =="True" :
                loader.start()
                copypaste.start()
            elif copyFuse =="False" :
                print "False All"
                resultat = Label(fenetre, text='Error : Check config.ini',fg='red')
                resultat.grid(row=1,column=1)
        else :
            resultat = Label(fenetre, text='Error : Check config.ini',fg='red')
            resultat.grid(row=1,column=1)
     
     #option- Patch #################################################
    def copywait():
        global resultat
        resultat = Label(fenetre, text='Attendez...',fg='black')
        resultat.grid(row=1,column=1)
     
    def copycopy(src, dst, srcbackup):
        global resultat
        l = glob.glob(src+'\\*') 
        for i in l: 
            if os.path.isdir(i): copycopy(i, dst, srcbackup) 
            else:
                try: os.makedirs(os.path.dirname(dst + os.sep + i[len(srcbackup)+1:]))
                except: pass
                shutil.copyfile(i, dst + os.sep + i[len(srcbackup)+1:])
                try : resultat.destroy()
                except : pass
                resultat = Label(fenetre, text='Patché !',fg='green')
                resultat.grid(row=1,column=1)
    #Thread ########################################################
    loader = threading.Thread(None, lambda: copywait(), None)
    copypaste = threading.Thread(None, lambda: copycopy("file",gameloc2,"file"), None)
    mais sa ne change a rien je sais pas si j'utilise correctement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    j'ai un peu compris un peu les thread. =P
    voila mon code :
    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
    19
    20
    21
    def copywait():
        global resultat
        resultat = Label(fenetre, text='Attendez...',fg='black')
        resultat.grid(row=1,column=1)
    def patchmsg():
        global resultat
        try : resultat.destroy()
        except: pass
        resultat = Label(fenetre, text='Patché !',fg='green')
        resultat.grid(row=1,column=1)   
    def copy(src, dst, srcbackup):
        global resultat
        l = glob.glob(src+'\\*') 
        for i in l: 
            if os.path.isdir(i): copy(i, dst, srcbackup) 
            else:
                try: os.makedirs(os.path.dirname(dst + os.sep + i[len(srcbackup)+1:]))
                except: pass
                shutil.copyfile(i, dst + os.sep + i[len(srcbackup)+1:])
        patchmsg()      
    copypaste = threading.Thread(None, copy, 'copyT', ('./lin',gameloc2,'./lin'))
    mais avec la fonction patchmsg() dans copywait sa freeze =( je pense qu'il faut supprimer le thread mais comment ?

  5. #5
    Membre éprouvé
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut
    Je ne suis pas sûr de tout comprendre de ton code. Par exemple, à quel moment appelles-tu copywait ?

    En fait, l'idée est d'afficher le message d'attente, puis de lancer dans un thread la copie (qui va donc s'exécuter indépendamment du message d'attente).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Message d'attente
    def copywait():
      ...
    # Fonction de copie
    def copy():
      ...
     
    # Affichage du message d'attente
    copywait()
    # Lancement de la copie en arrière plan (dans un thread)
    threading.Thread(None, copy, ...)

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

Discussions similaires

  1. Action au chargement d'une page
    Par Jere3110 dans le forum Struts 2
    Réponses: 11
    Dernier message: 05/06/2009, 16h47
  2. [Framework] Action après chargement du contexte
    Par X448GN dans le forum Spring
    Réponses: 2
    Dernier message: 21/04/2009, 14h19
  3. Réponses: 4
    Dernier message: 27/07/2006, 13h28
  4. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 17h16
  5. [C#] Problème action bloquante: chargement d'une form
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/05/2006, 16h00

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