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 :

Héritage d'objet wx et polymorphisme


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut Héritage d'objet wx et polymorphisme
    Bonjour,

    Je programme en wxPython et j'aurai voulu savoir comment dériver un objet wx pour faire un bouton personalisé par exemple, avec des informations supplémentaires, mais qu'ils soit quand même pris pour un bouton normal lorsque je lui applique des bindings car, lorsque l'on fait ça :

    class MonBouton(wx.button):
    def __init__(self):
    wx.bouton(args)
    self.mySupInfo="InfoSupplémentaire"

    et qu'en suite je fais un binding
    MyBut=MonBouton()
    MyBut.Bind(wx.EVT_BUTTON,MyFunc)

    Il me dit quelque chose du genre
    wxWindow expected (MonBouton) received

    Le polymorphisme n'existe pas en python ?? ou bien n'est-il pas implémenté pour les objets wxPython ?? Y a-t-il moyen de forcer l'interprêteur à le prendre en tant que wx.Button (cast en C)???

    Sinon, comment puis-je récupérer les bindings originaux de mon objet wx.button pour pouvoir gérer les évênements comme normalement avc ma propre classe.

    J'ai pensé éventuellement à faire ça :

    class MonBouton(wx.button):
    def __init__(self):
    self.wxid=wx.bouton(args)
    self.mySupInfo="InfoSupplémentaire"

    MyBut=MonBouton()
    MyBut.wxid.Bind(wx.EVT_BUTTON,MyFunc)

    Cela fonctionne surement mais je ne trouve pas ça joli, super propre, un peu bidouille. Je viens du C++ et quand j'hérite d'une classe, j'hérite réellement d'une classe, et de tout ce qui va autour, comment puis-je faire ça en python ????

    Merci

    RV

    L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour, il te faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class MonBouton(wx.Button):
        def __init__(self, *args, **kwargs):
            wx.Button.__init__(self, *args, **kwargs)
    wx.Button et pas bouton ....

    Et ne pas oublier de passer les arguments nécessaires.

    Pour l'héritage, voir sur la guide de style, ch 2b.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut
    Oui, désolé pour le bouton, mais déjà au départ c'est un checkbox, donc j'ai pris un bouton pour prendre plus simple, bien que... et donc mes doigts ont chourfés

    Hormis ce petit incident, c'est donc le passage d'argument que je ne fait pas bien si j'ai bien compris ???

    Je vais essayer ça

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut
    OK, ça semble faire ce que je souhaite mais maintenant, il me crie dessus quand je rajoute des arguments à ma classe

    MyBouton(None,-1,"LabelDuBouton",MonTruc="AutreChose")

    MonTruc n'est pas un attibut de la classe wx.Button, donc il est pas content, il faut donc que j'enlève tout ce que je rajoute à la liste *args et au dictionnaire **kwds avant de les passer en argument à wx.button, si j'ai bien compris ??

  5. #5
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    c'est tout à fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.monTruc = kwargs.pop('MonTruc')
    et hop, c'est parti...

Discussions similaires

  1. Héritage d'objet avec relation
    Par Fused dans le forum ORM
    Réponses: 7
    Dernier message: 25/01/2011, 10h20
  2. Héritage d'objet et WSDL
    Par aroutha dans le forum Services Web
    Réponses: 0
    Dernier message: 14/01/2010, 17h44
  3. Problème d'héritage orienté objet
    Par pitlabranche dans le forum Delphi
    Réponses: 3
    Dernier message: 24/01/2007, 21h09
  4. héritage pour objet proches?
    Par car dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/08/2005, 09h05

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