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 :

[wxPython] Problème de 'Bind'


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Mr Hyde
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 80
    Par défaut [wxPython] Problème de 'Bind'
    Bonjour à tous!

    Voila...j'utilise la fonction Bind pour associer des fonctions à des évenemments dans mon programme (avec wxPython). Jusqu'ici tout fonctionnait parfaitement bien et du jour au lendemain, j'obtient l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    File "lister.py", line 250, in ?
        fen_princ = FenetrePrincipale(None, -1, "")
      File "lister.py", line 150, in __init__
        self.onglets = Classeur(self, -1)
      File "lister.py", line 93, in __init__
        self.window_1 = liste_annonces.TestListCtrlPanel(self.onglet_mes_annonces, -1)
      File "liste_annonces.py", line 76, in __init__
        self.Bind(wx.EVT_SIZE, self.OnSize)
    AttributeError: TestListCtrlPanel instance has no attribute 'Bind'
    Comme si la fonction Bind avait disparue....j'ai donc commencé a me renseigner à se sujet, et dans la plupart des cas, l'erreur apparaissait car le développeur utilisait une version de wxPython antérieure à la 2.5....or j'utilise la 2.5.3 (et au début ca marchait bien). J'utilise python 2.4.1 sur linux (distro kubuntu 5.04)

    si quelqu'un a deja rencontré ce problème ou connait une autre facon d'associer une fonction à un évenemment, merci de m'aider!!

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 76
    Par défaut
    Tu peux poster le code de ta classe?
    La classe TestListCtrlPanel hérite-t-elle bien des propriétés d'un widget wxPython (via wx.Widget.__init__(self,...))?

  3. #3
    Membre confirmé Avatar de Mr Hyde
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 80
    Par défaut
    Voici le code de la classe:
    Je suis quasiment sur que le code ne contient pas d'erreur, car il n'est pas de moi!!
    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
     
    class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
        def __init__(self, parent,ident):
            wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
     
            tID = wx.NewId()
     
            self.il = wx.ImageList(16, 16)
            isz = (16,16)
            self.idx1 = self.il.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
            self.sm_up = self.il.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
            self.sm_dn = self.il.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
     
            self.list = TestListCtrl(self, tID,
                                     style=wx.LC_REPORT
                                     | wx.BORDER_NONE
                                     | wx.LC_EDIT_LABELS
                                     | wx.LC_SORT_ASCENDING
                                     )
     
            self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
     
            self.PopulateList()
     
            self.itemDataMap = mydata
            listmix.ColumnSorterMixin.__init__(self, 3)
            self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
            self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected, self.list)
            self.list.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)
    On m'a dit qu'il existait une autre méthode que Bind pour lier un event à une méthode...quelque chose du genre:
    wx.EVENEMENT(element_concerné, methode à appeler)
    ...est-ce que c'est vrai?

    Merci d'avance!

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 76
    Par défaut
    Citation Envoyé par Mr Hyde
    On m'a dit qu'il existait une autre méthode que Bind pour lier un event à une méthode...quelque chose du genre:
    wx.EVENEMENT(element_concerné, methode à appeler)
    ...est-ce que c'est vrai?
    Oui, dans les versions antérieures à 2.5 c'était la seule manière d'attacher des événements. Le nouveau système avec la méthode Bind() a été introduit pour être plus flexibe. Mais tu peux toujours utiliser l'ancien système si cela te plait.
    Dans le code présent, au lieu d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
    self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected, self.list)
    tu pourrait écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    self.list.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
    self.list.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected)
    qui est plus explicite je trouve. De plus ça résoudra peut-être ton problème.
    Essaye une fois et tiens nous au courant.

    PS: Même Robin Dunn dans les démos "bind" comme dans ton fichier donc je suis pas sûr que ça résoudra le problème.

  5. #5
    Membre confirmé Avatar de Mr Hyde
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 80
    Par défaut
    Merci pour ta réponse naxelas!

    J'ai remplacé mon code par le tiens, et j'obtient toujours la même erreur...c'est quand meme bizarre, je n'ai pas touché a mon code depuis au moins une semaine, et tout à coup, ca ne fonctionne plus...je pense que je vais utiliser l'ancienne méthode, au moins ca devrait fonctionner.

    Est-ce que tu connais un site ou je pourrais trouver la syntaxe éxacte de l'ancienne méthode?

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 76
    Par défaut
    http://wiki.wxpython.org/index.cgi/Getting_20Started
    il y a des exemples, ils sont à moitié traduits dans la nouvelle syntaxe (!) donc si tu fais un copié collé ils ne fonctionnent pas. Si tu rajoutes un wx. (e.g. wx.EVT_CHAR) devant les "bindages" à l'ancienne ça devrait aller

  7. #7
    Membre confirmé Avatar de Mr Hyde
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 80
    Par défaut
    Merci naxelas, ca a l'air de fonctionner!
    J'espere que je vais pas avoir d'autres suprises de ce genre là!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/07/2004, 23h27
  2. Bind ou pas Bind?
    Par jonzuzu dans le forum MFC
    Réponses: 4
    Dernier message: 19/03/2004, 10h00
  3. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  4. Bind - sous-domaine
    Par _Gabriel_ dans le forum Réseau
    Réponses: 4
    Dernier message: 07/03/2004, 11h54
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

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