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

GUI Python Discussion :

Afficher un graphe matplotlib sur un tkinter


Sujet :

GUI Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : mars 2012
    Messages : 63
    Points : 49
    Points
    49
    Par défaut Afficher un graphe matplotlib sur un tkinter
    bonjour
    voici mon code j'ai pas d'erreur, mais si j'appuis sur la touche graphe rien ne se passe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    import matplotlib as plt
    import matplotlib
    matplotlib.use('TkAgg')
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk 
    from matplotlib.figure import Figure
    from tkinter import *
    from tkinter import filedialog
    import tkinter as tk
    import pandas as pd
    global nucl , percent,symb
    import io
    from keras.models import load_model
    from keras.preprocessing import image
    import numpy as np
     
    class mclass:
        global color
        color="white"
     
        def __init__(self,  root):
            self.logo = PhotoImage(file="/Users/imed/Desktop/interface/rium.png")
            self.root = root
            #helv36 = tkFont.Font(family='Helvetica', size=14, weight='bold')
            self.nucl= StringVar()
            self.percent=StringVar()
            self.symb=StringVar()
            self.symb.set("%")
            self.root.wm_title("Isotope Tdentification")
     
            self.frame = tk.Frame(master=self.root)
            self.frame.pack(fill=tk.BOTH, expand=1)
     
            self.figure = Figure(figsize=(5, 4), dpi=100)
            self.axes = self.figure.add_subplot(111)
            self.canvas = FigureCanvasTkAgg(self.figure, master=self.frame)
            self.canvas.draw()
            self.canvas.get_tk_widget().place(x=10, y =40, width=450, height=400)
     
            self.label = tk.Label(master=self.frame,textvariable=self.nucl,bg="red")
            self.label.place(x=50, y=10)
     
            # Utilisation d'une fermeture, les valeurs de canvas et figure sont capturées 
            self.button = tk.Button(master=self.frame, text='Verifier', command=self.learn)
            self.button.pack(side=tk.BOTTOM)
            self.button = tk.Button(master=self.frame, text='Graphe', command=self.plot)
            self.button.pack(side=tk.BOTTOM)
            self.button = tk.Button(master=self.frame, text='Parcourir', command=self.askopenfile)
            self.button.pack(side=tk.BOTTOM)
            self.toolbar = NavigationToolbar2Tk(self.canvas,self.frame )
            #toolbar.config(background=color)
            self.toolbar.update()
            self.toolbar.pack(side=tk.BOTTOM)
        def askopenfile(self):
             self.fil=filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("xlsx files","*.xlsx"),("all files","*.*")))
        def plot (self):  
            self.xl = pd.ExcelFile(self.fil)
            self.df1 = self.xl.parse('Spectre')
            self.coups=self.df1['Coups']
            self.energie=self.df1['Energie (keV)']
            self.fig = Figure(figsize=(5,4), dpi=100)
     
            self.figure.canvas.draw()
            if self.fig.axes:
                self.figure.delaxes(figure.axes[0])
            #axes = figure.add_subplot(111)
            self.a = self.fig.add_subplot(111)
            self.a.set_facecolor(color)
            self.a.plot(self.energie,self.coups,'k')
            self.a.vlines(x=self.energie,ymin=0,ymax=self.coups,color='black')
     
            self.imag = io.BytesIO()
            self.figure.savefig(self.imag, format='png')
            self.imag.seek(0)
            #return self.imag
        def learn(self): 
     
            model = load_model('/Users/imed/Desktop/new_model_200.h5')
            self.nucleide=['Mn','U','Cs','Am','Na','Co60','Y','Sr']
     
            self.img = image.load_img(self.imag, target_size=(128, 128))
     
            self.x = image.img_to_array(self.img)
            self.x = np.expand_dims(self.x, axis=0)
     
            self.images = np.vstack([self.x])
            self.classes = model.predict_classes(self.images/255)
            print(self.nucleide[self.classes[0]]) 
            self.nucl.set(self.nucleide[self.classes[0]])
     
    root= Tk()
    root.geometry("623x552")
    root.title()
    #window.configure(background=color)
    start= mclass (root)
    root.mainloop()

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 481
    Points : 24 497
    Points
    24 497
    Par défaut
    Salut,

    Citation Envoyé par elmhmdi Voir le message
    voici mon code j'ai pas d'erreur, mais si j'appuis sur la touche graphe rien ne se passe.
    Probablement parce que vous vous êtes mélangé les pinceaux quelque part!

    Vous pourriez commencer par virer de votre code tout ce qui ne concerne pas la suite d'opérations: lancer tkinter, créer une figure, récupérer le canvas, créer le Button "Graphe", la méthode .plot qui y affiche un graphique,...

    Cela déjà ferait moins de lignes à regarder/comprendre et, last but not least, moins de code à poster et un problème plus facile à reproduire pour ceux qui souhaiteraient vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Afficher un calcul mathématique sur Tkinter
    Par Nerii dans le forum Tkinter
    Réponses: 3
    Dernier message: 01/01/2018, 12h09
  2. [Graph API] Afficher un mur Facebook sur un site
    Par Nheavy dans le forum Facebook
    Réponses: 1
    Dernier message: 12/12/2011, 18h16
  3. [Graph API] Afficher un mur Facebook sur un site
    Par Nheavy dans le forum APIs Réseaux sociaux
    Réponses: 0
    Dernier message: 12/10/2011, 22h21
  4. Afficher des graphes sur une page web
    Par zalalus dans le forum C#
    Réponses: 1
    Dernier message: 19/08/2009, 11h55
  5. afficher une ligne contante sur le graphe d'un DBChart ?
    Par bigfoot dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/12/2004, 17h33

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