Incompatibilité thread et Tkinter

Fermé
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 23 janv. 2014 à 18:00
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 24 janv. 2014 à 08:38
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é.
A voir également:

2 réponses

ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 23/01/2014 à 18:44
'lut, tu peux contourner ça en changeant le backend de mathplotlib, qui par défaut est TkAgg si on a TkInter:
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
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
24 janv. 2014 à 08:38
Merci de ta réponse, malheureusement, ni GTK ni Qt ni WX ne sont installés. De tout les backends fournis dans le lien, le seul disponible c'est TkAgg.
Si ça fonctionne en tout cas, c'est une bonne alternative.
0