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

Bibliothèques tierces Python Discussion :

matplotlib masquer courbe avec bouton tkInter


Sujet :

Bibliothèques tierces Python

  1. #1
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut matplotlib masquer courbe avec bouton tkInter
    Bonjour, j'ai intégrer un graphique matplotlib dans ma fenetre tk, maintenant j'aimerais pouvoir masquer une courbe avec un bouton, mais sa ne marche pas (la courbe et tout le temps masquer) pourquoi ?

    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
     
    import matplotlib
    matplotlib.use('TkAgg')
     
    from numpy import arange, sin, pi
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
     
    from matplotlib.backend_bases import key_press_handler
     
     
    from matplotlib.figure import Figure
     
    import sys
    import tkinter as Tk
     
    root = Tk.Tk()
    root.wm_title("Embedding in TK")
     
     
    f = Figure(figsize=(5,4), dpi=100)
    a = f.add_subplot(111)
    t = arange(0.0,3.0,0.01)
    s = sin(2*pi*t)
    lines = a.plot(t,s)
     
     
    canvas = FigureCanvasTkAgg(f, master=root)
    canvas.show()
    canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
     
    toolbar = NavigationToolbar2TkAgg( canvas, root )
    toolbar.update()
    canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
     
    def on_key_event(event):
        print('you pressed %s'%event.key)
        key_press_handler(event, canvas, toolbar)
     
    canvas.mpl_connect('key_press_event', on_key_event)
     
    def _quit():
        root.quit()
        root.destroy()
     
    def hideline():
        lines.pop(0).remove()
     
    button = Tk.Button(master=root, text='remove line', command=hideline())
    button.pack(side=Tk.BOTTOM)
    button = Tk.Button(master=root, text='Quit', command=_quit)
    button.pack(side=Tk.BOTTOM)
     
    Tk.mainloop()

    Merci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par sazearte Voir le message
    Bonjour, j'ai intégrer un graphique matplotlib dans ma fenetre tk, maintenant j'aimerais pouvoir masquer une courbe avec un bouton, mais sa ne marche pas (la courbe et tout le temps masquer) pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     button = Tk.Button(master=root, text='remove line', command=hideline())
    Bonjour,
    Je n'ai pas regardé en détails, mais cette ligne pose problème quand à la commande…

    Citation Envoyé par sazearte Voir le message
    Cette ligne aussi…

    Enfin, à première vue, il semble qu'il ait d'autres choses qui ne vont pas!

    Clodion

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut.
    Il ne faut pas appeler hideline lors de la création du bouton mais donner sa référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tk.Button(master=root, text='remove line', command=hideline).pack(side=Tk.BOTTOM)
    Et faire une mise à jour après la suppression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def hideline():
        lines.pop(0).remove()
        canvas.show()
    Ca fonctionne, mais le pop(0).remove() n'est vraiment pas propre.

  4. #4
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Hier soir j'ai tenté autre chose, j'ai directement intégrer mes boutons dans matplotlib.
    Mais le problème c'est que par la suite il y'aura plus de 250 bouton a aligner.

    Peut on mettre a ces boutons une taille minimal et mettre une scrollbar ?
    Voila mon code:
    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
    import matplotlib.pyplot as plt
     
     
    from matplotlib.widgets import CheckButtons
     
    fig, ax = plt.subplots(figsize=(6.5, 6))
    fig.subplots_adjust(left=0.2)
     
    # plot
     
    linelist=[]
    x = [0, 1, 2]
    y = [0, 1, 3]  
    lines = plt.plot(x, y, lw=5, visible=True)
    linelist.append(lines)
    lines = plt.plot(y, y, lw=5, visible=True)
    linelist.append(lines)
    lines = plt.plot(y, x, lw=5, visible=True)
    linelist.append(lines)
     
     
    ax.set_ylim(-1.5, 1.5)
     
    # check button
    rax = plt.axes([0.02, 0.4, 0.13, 0.2], aspect='equal')
    labels = ['var1', 'var2', 'var3']
    state = [True, True, True]
    check = CheckButtons(rax, labels, state)
     
    def func(label):
        i = labels.index(label)
        linelist[i][0].set_visible(not linelist[i][0].get_visible())
        fig.canvas.draw()
     
    check.on_clicked(func)
     
    plt.show()

Discussions similaires

  1. Courbe avec TKinter (Python)
    Par Florian BERTOSSI dans le forum Tkinter
    Réponses: 4
    Dernier message: 21/05/2014, 18h40
  2. masquer textbox avec bouton
    Par bastien27100 dans le forum VB.NET
    Réponses: 1
    Dernier message: 19/09/2012, 12h18
  3. Simple courbe avec matplotlib
    Par LinuxUser dans le forum GUI
    Réponses: 10
    Dernier message: 14/02/2012, 11h42
  4. [Débutant] afficher ou masquer une courbe avec Zgraph
    Par lolo81 dans le forum C#
    Réponses: 1
    Dernier message: 15/07/2011, 11h09
  5. [AC-2007] Afficher / Masquer masque de saisie avec bouton de commande
    Par klash384 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/05/2010, 00h55

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