Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > GUI > Tkinter
Tkinter Forum d'entraide sur Tkinter et compatible (Tix, Pmw, ...). Avant de poster -> FAQ Tkinter
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/02/2013, 13h29   #1
Julien N
Membre du Club
 
Homme julien N
Ingénieur
Inscription : août 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme julien N
Localisation : France

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2010
Messages : 54
Points : 43
Points : 43
Par défaut Matplotlib - FigureCanvasTkAgg - Embedded graph

Bonjour tout le monde,

Je développe en ce moment un petit outil en python. Après avoir finaliser la partie "solver" je me suis attaqué à l'interface. Je cherche à faire quelque chose de simple et sans prétention. Je me suis donc tourné vers tkinter qui est très documenté.

Dans cette interface je fais apparaître dans une fenêtre les résultats du solver sous la forme d'un graph généré avec Matplotib. Pour cela j'utilise les quelques lignes suivantes (code partiel):

Code :
1
2
3
4
5
6
7
8
9
10
from Tkinter import *
import ttk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
 
root = Tk()
mainFrame = Frame(root,width=700,height=500)
GraphBox = Frame(mainFrame,width=500,height=450,bg='white')
 
canvas = FigureCanvasTkAgg(Figure, master=GraphBox)
canvas._tkcanvas.pack()
Ici "Figure" est le graph en question. ça fonctionne merveilleusement bien. Mon seul soucis c'est lors de la fermeture de l'application, python crash avec le message suivant:

Fatal Python error: PyEval_RestoreThread: NULL tstate

Une rapide recherche Google m'a appris que ce message d'erreur est en lien avec une API C en lien avec la méthode employée pour afficher le graph.

Est-ce que vous auriez une idée plus précise sur la question, parce que j'avoue humblement ne pas être calé en programmation.

Merci!
Julien N est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2013, 12h42   #2
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 712
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 712
Points : 4 549
Points : 4 549
Salut,
Relisez la documentation.
Dans l'exemple donné, il y a ces commentaires:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
def _quit():
    root.quit()     # stops mainloop
    root.destroy()  # this is necessary on Windows to prevent
                    # Fatal Python Error: PyEval_RestoreThread: NULL tstate
 
button = Tk.Button(master=root, text='Quit', command=_quit)
button.pack(side=Tk.BOTTOM)
Tk.mainloop()
# If you put root.destroy() here, it will cause an error if
# the window is closed with the window manager.
Ya+ka
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2013, 09h21   #3
Julien N
Membre du Club
 
Homme julien N
Ingénieur
Inscription : août 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme julien N
Localisation : France

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2010
Messages : 54
Points : 43
Points : 43
Merci beaucoup Wiztricks.

J'étais passé à côté effectivement.. Pas d'excuse! J'ai une démo à faire lundi matin et il me reste pas mal de petite choses à modifier/corriger, mais au moins l'appli ne crashera pas!

Merci encore!

Ju
Julien N est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2013, 12h20   #4
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 712
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 712
Points : 4 549
Points : 4 549
Je vous imagine bien le nez dans le guidon à essayer de finaliser votre démo. C'est une période de stress et de solitude plus propice à maudire la terre entière qu'à prendre le temps de revisiter les fondamentaux.
Bon courage pour lundi.
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2013, 13h27   #5
Julien N
Membre du Club
 
Homme julien N
Ingénieur
Inscription : août 2010
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme julien N
Localisation : France

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2010
Messages : 54
Points : 43
Points : 43
Merci!
Julien N est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h20.


 
 
 
 
Partenaires

Hébergement Web