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

GUI Python Discussion :

event handling + clic de souris: comment ajouter des paramètres?


Sujet :

GUI Python

  1. #1
    Invité
    Invité(e)
    Par défaut event handling + clic de souris: comment ajouter des paramètres?
    Bonjour,

    J'ai un souci pour un programme python qui est similaire à la version minimaliste suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import matplotlib.pyplot as plt
    fig = plt.figure()
     
    def onclick(event):
      print event.button
     
    connection_id = fig.canvas.mpl_connect('button_press_event', onclick)
    plt.show()
    En fait, j'aimerais pouvoir entrer dans l'action 'onclick' d'autres paramètres (deux entiers) en plus de l'event. La fonction ressemblerait à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def onclick(event,a,b):
      print event.button
      print a,b,a+b
     
    connection_id = fig.canvas.mpl_connect('button_press_event', onclick(x1,x2))
    plt.show()
    mais j'ai le message d'erreur suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
        return self.func(*args)
      File "cfht2d.py", line 165, in action
        cid = fig.canvas.mpl_connect('button_press_event', onclick(lmin,lmax))
    TypeError: onclick() takes exactly 3 arguments (2 given)
    Auriez-vous une autre méthode à suggérer pour contourner ça?

    Merci!

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import matplotlib.pyplot as plt
    fig = plt.figure()
     
    def onclick(event, x, y):
      print event.button, x, y
     
    x1 = 1
    y1 = 10
    connection_id = fig.canvas.mpl_connect('button_press_event', lambda e: onclick(e, x1, y1))
    plt.show()
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Invité
    Invité(e)
    Par défaut
    ça a l'air de marcher. merci! ;-)

  4. #4
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Ceci dit, pour le code donné, les variables sont visibles (dans l'espace de nom global) dans onclick
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import matplotlib.pyplot as plt
    fig = plt.figure()
     
    def onclick(event):
        print event.button, a, b
     
    a = 1
    b = 10
    connection_id = fig.canvas.mpl_connect('button_press_event', onclick)
    plt.show()
    D'après l'erreur que vous nous montrez vos 'x1, y1' (lmin, lmax) pourrez ne pas être fixes, dans ce cas attention de bien donner la valeur au moment de l’exécution du code: lambda ev, max=lmax, min=lmin: onclick(ev, max, min)

    @+
    Merci d'utiliser le forum pour les questions techniques.

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

Discussions similaires

  1. [JTable]Comment ajouter des JCheckBox
    Par @yoyo dans le forum Composants
    Réponses: 7
    Dernier message: 24/03/2006, 14h27
  2. Comment ajouter des cases à cocher
    Par @yoyo dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/03/2006, 10h16
  3. [dbExpress et mysql] Comment ajouter des connexions ?
    Par servlet1 dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/09/2005, 09h38
  4. [EXPORT] Comment ajouter des packages au .jar ?
    Par djskyz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 23h23
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

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