Incompatibilité thread et Tkinter
Char Snipeur
Messages postés
10112
Statut
Contributeur
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
Bonjour,
J'ai un souci avec ce bug : https://bugs.python.org/issue3835
En fait, pour être plus clair. J'ai une interface graphique faite en tkinter. Cette interface lance un grand nombre de calcul qui prennent beaucoup de temps. (c'est la même application qui m'avait posé problème là : https://forums.commentcamarche.net/forum/affich-29309089-lancement-d-une-tache-separe )
J'ai donc créé un thread qui lance tout ces calculs. ça fonctionne très bien.
à la fin des calculs, je fais des impressions (dans un fichier) avec matplotlib. Seulement, matplotlib semble appelé tkinter qui ne supporte pas d'être appelé dans un thread (cf. premier lien).
J'essai avec un fork, mais comme le fork essai de dupliquer la fenêtre, j'ai une erreur aussi (X Error of failed request: etc.).
Il faudrait juste que j'arrive à lancer mon script python à partir d'un script python et que je reste dans le premier.
Toute idée est la bien venu. Je vais tenté avec os.system, mais je m'interroge sur sa portabilité.
J'ai un souci avec ce bug : https://bugs.python.org/issue3835
En fait, pour être plus clair. J'ai une interface graphique faite en tkinter. Cette interface lance un grand nombre de calcul qui prennent beaucoup de temps. (c'est la même application qui m'avait posé problème là : https://forums.commentcamarche.net/forum/affich-29309089-lancement-d-une-tache-separe )
J'ai donc créé un thread qui lance tout ces calculs. ça fonctionne très bien.
à la fin des calculs, je fais des impressions (dans un fichier) avec matplotlib. Seulement, matplotlib semble appelé tkinter qui ne supporte pas d'être appelé dans un thread (cf. premier lien).
J'essai avec un fork, mais comme le fork essai de dupliquer la fenêtre, j'ai une erreur aussi (X Error of failed request: etc.).
Il faudrait juste que j'arrive à lancer mon script python à partir d'un script python et que je reste dans le premier.
Toute idée est la bien venu. Je vais tenté avec os.system, mais je m'interroge sur sa portabilité.
A voir également:
- Incompatibilité thread et Tkinter
- Impossible de rejoindre la session pour des raisons d'incompatibilité - Forum PS3
- Compte thread - Accueil - Réseaux sociaux
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Thread instagram c'est quoi - Accueil - Guide réseaux sociaux
- 12 thread ✓ - Forum Processeur
2 réponses
'lut, tu peux contourner ça en changeant le backend de mathplotlib, qui par défaut est TkAgg si on a TkInter:
Par exemple pour utiliser Cairo de GTK2.0, ou Qt4Agg pour Qt4. La liste des backends est disponible ici. Après je garantis pas non plus qu'ils supportent le multithread, mais une API de dessin style Cairo me semble plus "flexible" qu'une librairie de fenêtres (toute pourrie en plus! (ouais j'aime pas Tk :P ))
from human import idiocy
del idiocy
import matplotlib
matplotlib.use('GTKCairo')
Par exemple pour utiliser Cairo de GTK2.0, ou Qt4Agg pour Qt4. La liste des backends est disponible ici. Après je garantis pas non plus qu'ils supportent le multithread, mais une API de dessin style Cairo me semble plus "flexible" qu'une librairie de fenêtres (toute pourrie en plus! (ouais j'aime pas Tk :P ))
from human import idiocy
del idiocy