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

Python Discussion :

Récupérer une variable globale à partir d'un bouton radio MATPLOTLIB


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2019
    Messages : 67
    Points : 42
    Points
    42
    Par défaut Récupérer une variable globale à partir d'un bouton radio MATPLOTLIB
    Bonjour,

    je travaille en ce moment avec les boutons radio widget de matplotlib.
    Un exemple est donné dans la documentation avec 3 boutons permettant de générer un signal sinusoidal de différentes fréquence.
    A partir de cet exemple, je souhaite récupérer la valeur de la variable correspondant au bouton choisi par l'utilisateur. De nombreuses personnes ont déjà posé cette question sur internet, mais la plupart du temps, les réponses concernent des utilisateurs de Tkinter et pas de matplotlib.

    Voici le code de la documentation légèrement modifié:

    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
     
     
    import matplotlib.pyplot as plt
    from matplotlib.widgets import RadioButtons
     
    s1 = 1
    s2 = 2
    s3 = 3
     
    ydata=0
     
     
    axcolor = 'lightgoldenrodyellow'
    rax = plt.axes([0.05, 0.7, 0.15, 0.15], facecolor=axcolor)
    radio1 = RadioButtons(rax, ('2 Hz', '4 Hz', '8 Hz'))
     
    def boite1(label):
        global ydata
        ydata = label
        tab = {'2 Hz': s1, '4 Hz': s2, '8 Hz': s3}
        ydata = tab[label]
        print(ydata)
        return ydata
     
    radio1.on_clicked(boite1)
     
    E=ydata
    Tant que je clique sur les boutons radio, j'observe bien sur le terminal les valeurs '1', '2' ou '3' prises par la variable ydata à l'intérieur de la fonction 'boite1'
    Mais en dehors de la fonction 'boite1', la variable E ne prend jamais une des valeurs précédentes, seulement '0', valeur initiale que j'ai donné à ydata.
    Pourtant, j'ai bien défini ydata, à l'intérieur de la fonction boite1, comme étant une variable globale .....Je ne comprends donc pas, pourquoi je n'arrive pas à récupérer cette valeur en dehors de la fonction.

    Merci par avance de votre aide et de vos explications, permettant de comprendre et de corriger mon erreur.

    Cordialement,

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    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 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Citation Envoyé par Olivier20000 Voir le message
    Pourtant, j'ai bien défini ydata, à l'intérieur de la fonction boite1, comme étant une variable globale .....Je ne comprends donc pas, pourquoi je n'arrive pas à récupérer cette valeur en dehors de la fonction.
    Si j'écris:
    j'espère qu'afficher B retournera 1:
    mais si j'assigne une autre valeur à A, B ne changera pas pour autant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> A = 'zzz'
    >>> B
    1
    Et il n'y a pas de solution avec des objets dit non mutables (puisque modifier c'est assigner un autre objet/valeur).
    Par contre avec un objet "mutable":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> A = B = []
    >>> A.append(1)
    >>> B
    [1]
    >>>
    A et B voient le même objet et les modifications de l'objet sont visibles qu'on y accède depuis A ou B.

    - W

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2019
    Messages : 67
    Points : 42
    Points
    42
    Par défaut Merci !
    Merci beaucoup de votre aide ! J'ai bien compris le problème et modifié le code en conséquence. Ca fonctionne maintenant !

    Cordialement,

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2012, 16h27
  2. [CS5] Déclarer une variable global à partir d'une fonction
    Par Stalk3R dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 09/04/2012, 18h09
  3. [SP-2007] Instaurer et récupérer une variable globale (ferme)
    Par nonoxp dans le forum SharePoint
    Réponses: 1
    Dernier message: 19/10/2009, 16h27
  4. Réponses: 3
    Dernier message: 20/03/2009, 16h44
  5. Récupérer une variable globale
    Par sourivore dans le forum Flash
    Réponses: 4
    Dernier message: 03/12/2006, 20h33

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