# Autres langages > Python > GUI > [Python 3.X] Ma class ne fonctionne pas dans un Thread

## Bydouil

J'ai un script avec plusieurs fonctions, et une class (GUI) pour piloter ces fonctions.

Je voudrai que cette class fonctionne dans un Thread et communique par une variable (avec acquire et release).
Mais quand je lance >threading.Thread(target=MaClass)<, j'ai une erreur parce que la class n'est pas callable.

Une solution ??

----------


## VinsS

Salut,

Cela dpend de la manire dont ta classe est cre. A-t-elle une mthode ___init__()_ ?

Il faudra sans doute l'instancier avant et appeler une de ses mthodes pour faire tourner le thread.

Tu parles de GUI  propos de cette classe, si elle doit grer les rafrachissements de widgets tu risques d'avoir des soucis, le serveur graphique n'apprcie pas que ses ressources soient utilises par autre chose que le processus primaire du programme.

----------


## Bydouil

Bonjour VinsS

Oui j'ai essay avec __init__
def __init__(self):
		threading.Thread.__init__(self)
def run():
...
def stop():
...

J'ai un programme pour grer, assembler, dater, historiser plusieurs fichiers ou parties de fichiers.

J'aimerai voire, intervenir sur son fonctionnement (qui peut tre long) avec une interface graphique. Je suis en train de le modifier avec des  'acquire' et 'release' sur certaines variables. Dont une par exemple qui servira  passer des commandes (xcuter avec eval).

C'est pour cette raison que j'aimerai avoir cette interface graphique dans un Thread. Mais comme la class n'est pas callable, je ne voie pas comment faire. J'ai essay avec une fonction qui appel cette class, ou l'importe etc, mais a coince

Ma solution actuelle : une fonction principale. mais c'est trs lourd (nommage, liaisons par exemple) et pas vraiment interactif.

----------


## wiztricks

Salut,




> Je voudrai que cette class fonctionne dans un Thread et communique par une variable (avec acquire et release).
> Mais quand je lance >threading.Thread(target=MaClass)<, j'ai une erreur parce que la class n'est pas callable.
> 
> Une solution ??


Quel est le problme?


```

```

- W

----------


## deusyss

Solution alternative sinon, le module multiprocessing, avec des pipes et/ou des queues.

----------


## deusyss

Si tu as obtenu reponse  ta question, n'oublie pas de passer le post

----------


## Bydouil

```

```

----------


## wiztricks

Salut,

J'ai parcouru en diagonale votre code.

Le thread pousse des commandes dans une liste. 
Ct GUI, une tache rptitive dpile les commandes s'il y en a et met  jour l'affichage. 

Ca fonctionne et c'est trs bien mais vous pourriez soumettre les mises  jour de l'affichage directement dans la boucle dvnement. C'est dj une liste et pas besoin de la grer.

Votre code est un peu trop touffu pour que je m'amuse  le modifier.
Par contre vous pourriez regarder *l'exemple* que j'ai post hier sur le mme sujet.

Bon courage
- W

----------

