Partage
  • Partager sur Facebook
  • Partager sur Twitter

Matplotlib, supprimer, mettre à jour un diagramme

Tkinter

    20 mai 2018 à 23:16:41

    from tkinter import *
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
    from matplotlib.figure import Figure
    
    
    class SampleApp(Tk):
        def __init__(self):
            Tk.__init__(self)
            self._frame = None
            self.switch_frame(StartPage)
            menubar = MenuBar(self)
            self.config(menu=menubar)
    
        def switch_frame(self, frame_class):
            """Destroys current frame and replaces it with a new one."""
            new_frame = frame_class(self)
            if self._frame is not None:
                self._frame.destroy()
            self._frame = new_frame
            self._frame.pack()
            
        def Pie(self):
             
             figure2 = Figure(figsize=(5,4), dpi=80) 
             subplot2 = figure2.add_subplot(111) 
             labels2 = 'grg', 'grr', 'grgr', 'rgr'
             pieSizes = [15, 30, 45, 10] 
             explode2 = (0, 0.1, 0,0)  
             subplot2.pie(pieSizes, explode=explode2, labels=labels2, autopct='%1.1f%%', shadow=True, startangle=90) # create the pie chart based on the input variables x1, x2, and x3
             subplot2.axis('equal')  
             pie2 = FigureCanvasTkAgg(figure2, self) 
             pie2.get_tk_widget().pack()
             
     
        
    class MenuBar(Menu):
        def __init__(self, master):
            Menu.__init__(self, master)
    
            fileMenu = Menu(self, tearoff=False)
            self.add_cascade(label="Menu",underline=0, menu=fileMenu)
            fileMenu.add_command(label="back to menu", underline=1, command=lambda: master.switch_frame(StartPage))
    
    
    class StartPage(Frame):
        def __init__(self, master):
            Frame.__init__(self, master)
            master.geometry("500x400+350+400")
            start_label = Label(self, text="Welcome")
            page_1_button = Button(self, text="Open page one",
                                      command=lambda: master.switch_frame(PageOne))
            start_label.pack(side="top", fill="x", pady=10)
            page_1_button.pack()
            
            
            
          
    class PageOne(Frame):
        def __init__(self, master):
            Frame.__init__(self, master)
            master.geometry("500x600+350+400")
            hashtag = StringVar()
            recherche = Entry(self,textvariable=hashtag)
            recherche.pack(pady = 20)
            page_1_label = Label(self, text="choose key word")
            start_button = Button(self, text="Validate",
                                     command= lambda : master.Pie())
            page_1_label.pack(side="top", fill="x", pady=10)
            start_button.pack()
           
            
       
    
    if __name__ == "__main__":
        app = SampleApp()
        app.mainloop()
    Bonjour à tou, je suis en train de créer une interface pour un projet.
    Mon problème est qu'avecmatplotlib je crée une pie chart  avec
    def Pie(self): 

     dans

    class PageOne(Frame): 

    En tout cas c'est ce que je veux, mais cette pie chart reste et s'accumule si j'en crée une nouvelle et se retrouve dans toutes mes pages alors que je veux qu'elle soit seulement dans PageOne

    Cela fait un moment  que je cherche mais sans succès.

    Merci d'avance de votre aide

    -
    Edité par Cyril_Mg 20 mai 2018 à 23:17:21

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2018 à 16:09:29

      Je ne comprends pas, chez moi ça reste dans la frame PageOne. Un autre exemple où ça foire ?

      • Partager sur Facebook
      • Partager sur Twitter
        23 mai 2018 à 17:31:18

        Peut-être l'IDE alors ?, je suis sur spyder
        Si ça reste dans PageOne il s'accumule ou pas chez toi ?
        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2018 à 17:50:05

          Pas sûr de savoir ce que tu entends pas accumuler mais je ne crois pas non.
          • Partager sur Facebook
          • Partager sur Twitter
            23 mai 2018 à 17:53:52

            Accumuler, le fait qu'en créant le graph ils s'affichent tous. Le deuxième ne remplace pas le premier.
            C'est quoi ton IDE ?

            -
            Edité par Cyril_Mg 23 mai 2018 à 17:54:05

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2018 à 9:55:43

              Pas d'IDE, directement par la terminal.
              • Partager sur Facebook
              • Partager sur Twitter

              Matplotlib, supprimer, mettre à jour un diagramme

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown