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

wxPython Discussion :

[events] Evenement perdu?


Sujet :

wxPython

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Par défaut [events] Evenement perdu?
    Bonjour, ci-dessous un programme de base avec un bouton et un panel. Le click sur le bouton lance toto. Le double click sur le panel ne fonctionne pas...
    Pas de message d'erreur, rien. Quelqu'un a une explication?

    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
    # !/usr/bin/python
    # *** coding: iso-8859-15 ***
     
    import wx
     
    class MonAppli(wx.App):
        def OnInit(self):
     
            # Creation de la frame principale
            fen = wx.Frame(None, -1, "Le titre", size = (800, 600))
     
            # Creation du bouton et du panel
            monBouton = wx.Button(fen, 20, 'bouton')
            self.monPanneau = wx.Panel(fen, 21, pos=(25,50), size=(600,600))
     
            # Affectation des evenements aux deux objets
            fen.Bind(wx.EVT_BUTTON, self.toto, id=20)
            fen.Bind(wx.EVT_LEFT_DCLICK, self.toto, id=21)
     
           # Afficher le fond du panneau en bleu
            couleurBleue = wx.Colour()
            couleurBleue.SetFromName("BLUE")
            self.monPanneau.SetBackgroundColour(couleurBleue)
     
            fen.Show(True)
            return True
     
     
        def toto(self, evt):
            print "coucou"
     
    myApplication = MonAppli()
    myApplication.MainLoop()

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    chez moi, ca marche. le "coucou" s'affiche dans la fenêtre stdout/stderr de wxPython

    Tu peux faire ceci aussi:

    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
    # !/usr/bin/python
    # *** coding: iso-8859-15 ***
     
    import wx
     
    class MonAppli(wx.Frame):
        def __init__(self):
     
            # Creation de la frame principale
            wx.Frame.__init__(self, None, -1, "Le titre", size = (800, 600))
     
            # Creation du bouton et du panel
            monBouton = wx.Button(self, 20, 'bouton')
            self.monPanneau = wx.Panel(self, 21, pos=(25,50), size=(600,600))
     
            # Affectation des evenements aux deux objets
            self.Bind(wx.EVT_BUTTON, self.toto, id=20)
            self.Bind(wx.EVT_LEFT_DCLICK, self.toto, id=21)
     
           # Afficher le fond du panneau en bleu
            couleurBleue = wx.Colour()
            couleurBleue.SetFromName("BLUE")
            self.monPanneau.SetBackgroundColour(couleurBleue)
     
            self.Show(True)
     
     
        def toto(self, evt):
            print "coucou"
     
    app = wx.PySimpleApp()        
    myApplication = MonAppli()
    app.MainLoop()
    (pas le double-clic sur le panel, mais est-ce qu'il peut recevoir des evènement de ce type ?)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Par défaut
    Oui je ne me suis pas forcément bien expliqué. Le click sur le bouton fonctionne bien, mais le double click sur le panel ne fait rien du tout.
    J'ai fini par trouvé moi-même: il semble qu'il y ait deux types d'events:

    - Les wx.CommandEvent (exemple: wx.EVT_BUTTON) qui sont remontés dans la hiérarchie (Button -> Panel -> Frame) s'ils ne sont pas attrapés en chemin, ou si la méthode event.Skip() est appelée

    - Les wx.Event (exemple: EVT_LEFT_DCLICK) qui eux ne sont pas remontés du tout, et c'est donc pourquoi il faut que j'écrive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.monPanneau.Bind(wx.EVT_LEFT_DCLICK, self.toto, id=21)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.Bind(wx.EVT_LEFT_DCLICK, self.toto, id=21)
    Youpi!!!

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

Discussions similaires

  1. [XL-2007] Evenement Change sur combobox crée dynamiquement [Controls et Event]
    Par znmile dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2012, 11h29
  2. [Event ADdItem][Liste] Probleme Evenement sur ajout
    Par HeB91 dans le forum SharePoint
    Réponses: 7
    Dernier message: 23/12/2009, 16h28
  3. Réponses: 4
    Dernier message: 21/09/2009, 12h28
  4. [c#][event] Association d'evenements
    Par UNi[FR] dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/03/2007, 21h49
  5. Réponses: 3
    Dernier message: 24/05/2006, 10h26

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