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
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é.
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
- Thread - Accueil - Guide réseaux sociaux
- Incompatibilité de type vba ✓ - Forum VB / VBA
- System thread exception not handled nvlddmkm.sys - Forum Windows 10
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
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:
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
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
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.
Si ça fonctionne en tout cas, c'est une bonne alternative.