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 :

bouton couleur avec matplotlib [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 5
    Par défaut bouton couleur avec matplotlib
    Bonjour,
    le but de ce programme est de créer un bouton qui change de couleur (2) et de label à chaque clic de souris .
    Les problèmes rencontrés sont :
    le changement de couleur ne s'effectue pas au clic mais lorsque la souris quitte le bouton.
    Le label du bouton n'apparait pas.
    Je n'arrive pas à passer ma variable "a" en argument de la fonction (event) et je suis obligé de passer par un variable "global"

    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
     
    import matplotlib.pyplot as plt
    from matplotlib.gridspec import GridSpec
    from matplotlib.widgets import Button, RadioButtons, Slider, TextBox
     
    #parametre de fenetrage#
    fen = plt.figure(figsize=(8,5), dpi=100, num='Fenetre')
    fen.set_facecolor('white') 
    gs = GridSpec(100,100)
    plt.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=0.95)
     
    #creation du bouton "couleur" et positionnement dans la fenetre#
    bouton1_ax = fen.add_subplot(gs[5:20, 5:20])
    bouton1 = Button(bouton1_ax,'')
    bouton1.label.set_fontsize(8)
     
    #initialisation#
    a=1
     
    def test (event):
        global a
        #premiere condition: le bouton passe au rouge, le label "Rouge" doit apparaitre dans le bouton et le mot rouge s'imprime#
        if a == 1:
            print ('ROUGE')
            bouton1.color='red'
            bouton1.hovercolor='red'
            bouton1.label ='Rouge'
            a = 2
        #seconde condition: le bouton passe au vert, le label "Vert" doit apparaitre dans le bouton  et le mot vert s'imprime#
        else:
            print ('VERT')
            bouton1.color='green'
            bouton1.hovercolor='green'
            bouton1.label ='Vert'
            a = 1
        return a 
     
    bouton1.on_clicked(test)
     
    plt.show()
    cordialement

    CARREZ Jean-François

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par crzjeff Voir le message
    le changement de couleur ne s'effectue pas au clic mais lorsque la souris quitte le bouton.
    C'est cohérent avec ce qu'en raconte la documentation.

    Citation Envoyé par crzjeff Voir le message
    Le label du bouton n'apparait pas.
    La documentation dit que le Button est composé d'un matplotlib.test.Text instance accessible via l'attribut label. Pour changer le texte, il faudra écrire quelque chose comme: bouton1.label.set_text(color)

    Citation Envoyé par crzjeff Voir le message
    Je n'arrive pas à passer ma variable "a" en argument de la fonction (event) et je suis obligé de passer par un variable "global"
    C'est matplotlib qui appellera "test" et qui récupérera sono retour: c'est pour cela qu'on appelle ces fonctions là "callback". Mais test reste une fonction: donc si ce qu'elle va faire dépend de "a" impossible de ne pas passer par une variable globale (ou un attribut de classe).

    note: vous n'êtes pas obligé d'utiliser les widgets de matplotlib, vous pouvez utiliser directement ceux de la bibliothèque graphique qui est en dessous (et pour çà voir dans les exemples comment faire).

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 5
    Par défaut bouton couleur avec matplotlib
    Merci pour ces réponses précises .
    cordialement

    CARREZ Jean-François

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

Discussions similaires

  1. [XL-2007] Userform avec un bouton "Couleur de remplissage"
    Par formabox dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/04/2012, 18h00
  2. Réponses: 2
    Dernier message: 11/04/2012, 20h12
  3. Graphique avec matplotlib, probléme d'affichage des boutons
    Par astragoth dans le forum Général Python
    Réponses: 0
    Dernier message: 08/04/2010, 08h27
  4. degradé de couleurs et contourf() avec matplotlib
    Par guibsou dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 04/11/2009, 16h58
  5. pb couleur avec Scanline
    Par bobymaw dans le forum C++Builder
    Réponses: 6
    Dernier message: 10/05/2004, 22h25

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