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 :

[Thread] Interface et thread


Sujet :

Python

  1. #1
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut [Thread] Interface et thread
    Bonsoir,

    Et on remet ca! Je vais finir par péter un cable.

    Je suis toujours sur un problème de mise en place de thread.
    J'ai une interface graphique en tkinter/Tix/Pmw.
    cette interface est composé d'un notebook. chaque page de ce notebook (4 page), met en page une scrolledlistbox listant le contenu d'un dossier cible (différent pour chaque page) et des bouton de controle (deplacer dossier, effacer dossier).

    j'ai deux fonctions qui doivent cacune être mise dans un thread différent. la premiére rafraichi a interval régulier les scrolledlistbox. la 2eme test si un dossier defini X est vide ou nom. dans le cas ou celui ci est vide, la fonction copie le premier fichier contenu dans le dossier attaché au 1er scrolledlistbox.

    pour lancer mes thread mon code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def mes_thread(self):
            ''' création des threads et lancement de ces derniers '''
            self.th_1=th.Thread(target=self.update_root)
            self.th_2=th.Thread(target=self.traitement_cmd)
     
            self.root.mainloop()
     
            self.th_1.start()
            self.th_2.start()
    Dans ce cas, mon interface se lance bien (et ne bloque pas!) mais met deux fonctions ne s'executent pas.

    voici en complément mon __init__ de ma Classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def __init__(self):
     
            self.master_gui() ### construction de mon interface
            self.stat=1 ### definition d'une variable de controle
            self.initialisation()  ### fonction de vérification des paramétres de configuration
            self.lock=0 ### autre variable de controle
            self.mes_thread()  ### lancement de mes threads (voir ci haut)
    je n'arrive vraiment pas a mettre en route le systeme multithread.
    Pourriez vous me conseiller (malgré avoir lu et relu la doc, et des exemples, je sèche)
    Sachant que je dois y ajouter encore 2 thread de traitement minimum.

    mille merci d'avence

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    je teste, je teste et je fini par cerner le problème.

    en fait c'est là fonction de mise a jour des listbox qui fige mon appli.
    je ne sais vraiment pas pourquoi, mais en tout cas, c'est vraiment cette fonction qui fige.
    voici le 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    def __init__(self):
     
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
            self.th_1=th.Thread(target=self.update_root)
            self.th_1.start()
            self.root.mainloop()
     
     
    def update_root(self):
            if self.breaker==0:
                ''' mise a jour des listbox '''
                time.sleep(3)
                if self.nb.getcurselection() == 'ATTENTE':
                    a=self.listdirectory(path=self.initial_dir + '/QUEUE')
                    self.lbqueue.item_int_nb(a)
                    self.lbqueue.selection_set(self.cur)
     
                elif self.nb.getcurselection() == 'TERMINE':
                    a=self.listdirectory(path=self.initial_dir + '/FINISH')
                    self.lbfinish.item_int_nb(a)
                    self.lbfinish.selection_set(self.cur)
     
                elif self.nb.getcurselection() == 'MAINTIEN':
                    a=self.listdirectory(path=self.initial_dir + '/WAIT')
                    self.lbwait.item_int_nb(a)
                    self.lbwait.selection_set(self.cur)
     
                elif self.nb.getcurselection() == 'ERREUR':
                    a=self.listdirectory(path=self.initial_dir + '/ERROR')
                    self.lberror.item_int_nb(a)
                    self.lberror.selection_set(self.cur)
                self.root.update()
    puis les deux fonctions complémentaires utilisées par le fonction update_root()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def item_int_nb(self,items):
            self.lb.setlist(items)
     
     
        def selection_set(self,valeur):
            try:
                self.lb.selection_set(valeur)
            except:
                pass
    si vous pouviez m'aider, ca seait cool.
    merci d'avance

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut c'est la faute à...
    Regarde dans la doc de tkinter la fonction de mainloop(). C'est en fait une boucle sans fin qui ne rend pas la main au reste du programme, si tu lances des threads ca doit être AVANT tout appel a mainloop() !!!

    a+,
    void

  4. #4
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    c'est bien ce que j'ai fait.

    ce que je ne comprend pas, c'est que je lance deux thread enfants en cliquant sur un bouton. Le programme se fige aprés un temps x défini dans une de mes fonctions associée a un thread (time.sleep(x))

    j'ai testé les deux fonctions l'une indépendement de l'autre, et j'ai defini qu'il y a en fait une seule fonction qui pose problème (mais c'est peut être l'arbre qui cache la forêt!)

    bref, si je lance uniquement le thread associé a la fonction qui fonctionne, ca roule! Mon interface ne fige pas.
    Mais si j'essaie avec l'autre thread, toujours le même problème.

    si vous avez des suggestions!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def mes_thread(self):
            ''' création des threads et lancement de ces derniers '''
            self.th_1=th.Thread(target=self.update_root)
            self.th_2=th.Thread(target=self.traitement_cmd)
     
            self.root.mainloop()
     
            self.th_1.start()
            self.th_2.start()
    le self.root.mainloop() n'a rien a faire la !

    Void

  6. #6
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    ok, si je le met autre part, (cad aprés les th_1.start(), et th_2...) le prog s'ouvre et se ferme tout de suite.
    Je viens de trouver une solution mais franchement je ne comprend pas pourquoi ca marche comme ca.
    Tout part d'une premiére erreur de prog, voir ci joint:
    http://www.developpez.net/forums/sho...d.php?t=255486

    comment j'ai procédé: dans mon __init__(self):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        #### Initialisation 
    def __init__(self):
            
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
            
            self.th_1=th.Thread(self.update_root())
            self.th=th.Thread(self.root.mainloop())
    et pour lancer mon dernier thread via une action sur un bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def mes_thread(self):
            ''' création des threads et lancement de ces dernières '''
            self.th_2=th.Thread(target=self.traitement_cmd)
            self.th_2.start()
    remarquez la syntaxe différente dans la construction de mes deux premier thread comparé a la construction du dernier.
    Ce dernier étant construit comme il le faut (comme dans la doc)

    Si quelqu'un a une explication je suis preneur, parceque là j'avoue que c'est incompréhensible.

    En tout cas ca fonctionne et mon interface ne fige plus

    seul soucis c'est que je suis incapable de savoir si mes deux premiers threads sont bien détruit lorsque je quitte mon prog.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut
    pourrais tu poster un peu plus de ton code, car la ca aide pas beaucoup.


    Merci,
    void

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
     
            self.th_1=th.Thread(self.update_root()) (1)
            self.th=th.Thread(self.root.mainloop()) (2)
    ligne (1) et (2) tu as une grosse erreur, self.update_root() execute la methode self.update.root() , c'est pas cela dont a besoin th.thread(). il faut transformer ces deux lignes en:

    self.th_1 = th.Thread( self.update_root )
    self.th = th.Thread( self.root.mainloop )

    il ne faut pas mettre les parenthèses, sinon tu invoques les methodes, alors qu'on a besoin de l'adresse de la fonction. Et après ne pas oublier de faire les self.th.start() et self.th_1.start() qui conviennet, bien sur.

    void

  9. #9
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    C'est bien là ou c'est incompréhensible.

    Si je le fais comme tu le dis (ce que j'ai déjà essayer avant de poster), l'interface se fige lorsque la fonction update_root est déclenchée.

    j'ai retourné le problème dans tout les sens. j'ai essayer en mettant des verrous virtuels (variable associé a if et elif) mais rien n'y fait.
    si ma fonction update_root ne fige pas mon interface, je n'ai pas accés a certains widgets (bar de menu)
    si j'ai accés a l'ensemble de mes widgets, c'est l'interface qui fige au moment ou update_root est exécuté.

    Je ne comprends vraiment pas.

    Si je construit mes threads enfants, cad th_1 et th_2 avant th qui gére mon mainloop, l'inrface se lance et se ferme aussitot, alors même que th_1.start() et th_2.start() n'ont pas été invoqué.


    Je continue mes recherche mais pour l'instant ca fonctionne trés bien avec cette faut de syntaxe. Bizar les threads ...

    je suis toujours preneur de nouvel axe de recherche pour resoudre cette incohérence dans mon programme.

    merci

  10. #10
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    tu peux essayer en mettant le self.root.mainloop() dans un thread que tu exécutes en premier dans tes threads. Par contre, je ne comprends pas trop: ta fonction update_root(self) , en quoi est-elle appelé périodiquement ? Il faudrait que tu mettes un boucle infinie dedans si tu veux qu'elle soit périodique parce que ton thread dans ce que je lis ne l'appelle qu'une seule fois.

    Voilà un exemple qui marche parfaitement (mais ne mais peut-être pas en jeu tous les problèmes que tu es amené à rencontrer dans ton prog).

    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
    import Tkinter as Tk
    import threading
    import time
     
    root = Tk.Tk()
    l1 = Tk.Listbox(root)
    l2 = Tk.Listbox(root)
    l1.pack()
    l2.pack()
    i=0
    j=0
    DoContinue = True
     
    def stop():
      global DoContinue
      DoContinue = False
     
     
    btn = Tk.Button(root, text = "stop", command = stop)
    btn.pack()
     
    def ajoutl1():
      global i
      while DoContinue:
        l1.insert(0, i)
        time.sleep(1)
        i+=1
     
    def ajoutl2():
      global j
      while DoContinue:
        l2.insert(0, j)
        time.sleep(1)
        j+=1
     
    t1 = threading.Thread(target = ajoutl1)
    t2 = threading.Thread(target = ajoutl2)
    t3 = threading.Thread(target = root.mainloop)
     
    t3.start()
    t1.start()
    t2.start()

  11. #11
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    ma fonction update_root permet de mettre a jour la liste des valeurs de la listebox au fur et a mesure que ces valeurs sont modifiées. (comme dans ton exemple Guigui, sauf que moi je liste en continue le contenu d'un dossier)
    voici ma fonction:
    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
    def update_root(self):
            while self.breaker==0:
                ''' mise a jour des listbox '''
                time.sleep(0.7)
                if self.nb.getcurselection() == 'ATTENTE':
                    a=self.listdirectory(path=self.initial_dir + '/QUEUE')
                    self.lbqueue.item_int_nb(a)
                    self.lbqueue.selection_set(self.cur)
     
                elif self.nb.getcurselection() == 'TERMINE':
                    a=self.listdirectory(path=self.initial_dir + '/FINISH')
                    self.lbfinish.item_int_nb(a)
                    self.lbfinish.selection_set(self.cur)
     
                elif self.nb.getcurselection() == 'MAINTIEN':
                    a=self.listdirectory(path=self.initial_dir + '/WAIT')
                    self.lbwait.item_int_nb(a)
                    self.lbwait.selection_set(self.cur)
     
                elif self.nb.getcurselection() == 'ERREUR':
                    a=self.listdirectory(path=self.initial_dir + '/ERROR')
                    self.lberror.item_int_nb(a)
                    self.lberror.selection_set(self.cur)
                self.root.update()
    la variable self.breaker permet d'arreter proprement la fonction lors de la fermeture du logiciel.

    j'ai tout essayé (pas tout sinon j'aurais plus de prob). si je créer un thread pour root.mainloop() et que je le lance en dernier aprés mes deux autres threads mon prog s'ouvre et se referme aussitot.
    voir le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        def __init__(self):
     
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
     
     
            self.th_1=th.Thread(target=self.update_root)
            self.th=th.Thread(target=self.root.mainloop)
            self.th.start()
            self.th_1.start()
    le programme se lance et fonctionne (a priori) mais ma barre de menu ne fonctionne plus. Cad que lorsque je clique sur un onglet, plus rien ne se passe, pas de possibilité de choisir une option dans le menu déroulant qui normalement devrait apparaitre.
    C'est vraiment bizar!

    Ma question est plutot la suivante:
    Quel problème peut être généré en utilisant le code ci aprés, qui lui fonctionne et pour l'instant ne me génére pas d'erreur ou anomalie de fonctionnement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def __init__(self):
     
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
     
            self.th_1=th.Thread(self.update_root())
            self.th=th.Thread(self.root.mainloop())
    merci
    c'est un peu prise de tête!

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def __init__(self):
     
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
     
            self.th_1=th.Thread(self.update_root())
            self.th=th.Thread(self.root.mainloop())
    tout simplement, ton root.mainloop() ne s'execute pas dans un thread, pas plus que self.update_root() d'ailleur ... Ce code fonctionne "par hazard"...

    tu n'as pas besoin de lancer root.mainloop() dans un thread. Essaye tu verras. Si tu remplaces ce code par ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def __init__(self):
     
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
     
            self.th_1=th.Thread(self.update_root)
            self.th_1.start()
            self.root.mainloop()
    ca marchera de la meme maniere. Si ca plante en faisant de la bonne maniere, c'est que l'erreur est ailleurs.

    Void

  13. #13
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    merci
    on se rapproche de la solution.
    ca ne marche pas comme tu me le met.
    mais on arrive a réduire encore un prob.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def __init__(self):
     
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
     
            self.th_1=th.Thread(self.update_root())
     
            self.root.mainloop()
    ca ca marche, donc j'en deduit que ca viens de ma fonction de mise a jour des liste affiché dans mes différentes listbox.

    Mais je n'arrive toujours pas a expliquer pourquoi la fonction Update_root, ne fonctionne bien que lorsque je fais cette faute de syntaxe.
    Pourtant cette fonction est super simple.

    je continue a chercher.
    merci

  14. #14
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    ca y est, merci a tous j'ai reussi a me corriger

    en fait j'en ai presque honte

    voici un code sain:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def __init__(self):
            
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
            self.update_root()
            
            self.root.mainloop()
    comme quoi on arrive facilement a se prendre la tete.

    cette fonction ne fonctionne que si elle est lancé normalement avant mon mainloop()
    elle boucle donc elle tourne en continue, et tout se passe bien.

    merci a tous

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut
    Content que tu est enfin trouvé la solution :-)

    Ton code est maintenant effectivement BEAUCOUP plus sain !!

    a+
    Void

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Par défaut
    oups j'avais fait une erreur dans le code, ca doit etre ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def __init__(self):
            
            self.master_gui()
            self.stat=1
            self.initialisation()
            self.lock=0
            self.temps=100
            
            self.th_1=th.Thread(target=self.update_root)
            self.th_1.start()
            self.root.mainloop()

  17. #17
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    non, même comme ca ca ne fonctionne pas.
    mon interface fige

    mais c'est pas grave, j'ai résolu le prob et ca fonctionne bien.
    l'interface est un peu ralentie mais ce n'est absolument pas grave.
    ce n'est juste qu'une interface de controle donc pas de soucis.

    merci

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/09/2014, 17h02
  2. affichage interface et thread
    Par cyrull dans le forum wxPython
    Réponses: 5
    Dernier message: 23/02/2009, 07h45
  3. Thread, Interface et Controler
    Par LordBob dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 18/11/2007, 00h30
  4. [Threads et interface] le thread bloque tout
    Par meda dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 28/10/2004, 16h52
  5. Réponses: 3
    Dernier message: 11/02/2004, 12h50

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