IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Matplotlib - FigureCanvasTkAgg - Embedded graph


Sujet :

Tkinter Python

  1. #1
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,
    Relisez la documentation.
    Dans l'exemple donné, il y a ces commentaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    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

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    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.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. matplotlib modifier attribut graph
    Par membreComplexe12 dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 23/10/2014, 09h55
  2. matplotLib : rafraichir un graph
    Par yanouil dans le forum Général Python
    Réponses: 0
    Dernier message: 17/10/2014, 17h05
  3. Autoscale graphe matplotlib
    Par foufounegirl dans le forum PyQt
    Réponses: 1
    Dernier message: 16/11/2011, 14h49
  4. Enregistrer un graph Matplotlib
    Par Dramac dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 08/04/2009, 16h00
  5. [matplotlib] dessiner graph avec pcolor
    Par thibaultG dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 02/04/2008, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo