|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : héritage de wxObject et polymorphisme ?? [ Divers / Débutant(e) ] (RV2931)
Informations & options pour cette discussion
|
mardi 19 février 2008 à 20:06:08 |
héritage de wxObject et polymorphisme ??

RV2931
|
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.orig=wx.bouton(args)
self.mySupInfo="InfoSupplémentaire"
MyBut=MonBouton()
MyBut.orig.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, 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"
|
|
|
|
mercredi 20 février 2008 à 10:31:50 |
Re : héritage de wxObject et polymorphisme ??

laurent1024
|
Bonjour. C'est surement car Bind n'est pas une méthode de wxButton (je ne connais pas beaucoup wxpython). Dans les exemples qu'il y a sur le net c'est la classe Frame qui utilise les binds : class MyFrame(wx.Frame): def __init__(self, *args, **kwds): # begin wxGlade: MyFrame.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) self.pnl = wx.Panel(self) self.label_1 = wx.StaticText(self.pnl, -1, " Fichier source") self.button_1 = wx.Button(self.pnl, -1, "Parcourir") self.text_ctrl_1 = wx.TextCtrl(self.pnl, -1, "") self.label_2 = wx.StaticText(self.pnl, -1, " Garder une ligne sur") self.label_5 = wx.StaticText(self.pnl, -1, "..................") self.text_ctrl_2 = wx.TextCtrl(self.pnl, -1, "") self.label_3 = wx.StaticText(self.pnl, -1, " Fichier destination") self.button_2 = wx.ToggleButton(self.pnl, -1, "Auto") self.text_ctrl_3 = wx.TextCtrl(self.pnl, -1, "") self.label_4 = wx.StaticText(self.pnl, -1, " Etat") self.button_3 = wx.Button(self.pnl, -1, "Go") self.label_6 = wx.StaticText(self.pnl, -1, " Cutline 1.0") self.__set_properties() self.__do_layout() self.Bind(wx.EVT_BUTTON, self.parcourir, self.button_1) self.Bind(wx.EVT_TOGGLEBUTTON, self.auto, self.button_2) self.Bind(wx.EVT_BUTTON, self.go, self.button_3) self.compteur=0 # end wxGlade
|
|
|
|
mercredi 20 février 2008 à 10:54:27 |
Re : héritage de wxObject et polymorphisme ??

aera group
|
Réponse acceptée !
Rien de bien compliqué :
import wx
class
Mon_Bouton(wx.Button): def __init__(self,panel,texte,info): wx.Button.__init__(self,panel,-1,texte) self.info = info
defaffiche_info(self): return self.info
class
Frame(wx.Frame): def__init__(self, parent, title): wx.Frame.__init__(self, parent, -1, title,size=((200, 150)))
panel = wx.Panel(self)
text=wx.StaticText(panel, -1, "Bonjour tout le monde") self.bouton = Mon_Bouton(panel, "Afficher les infos du bouton",\ "Des infos suplémentaire")
self.Bind(wx.EVT_BUTTON, self.info, self.bouton) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(text, 0, wx.ALL|wx.CENTER, 10) sizer.Add(self.bouton, 0, wx.ALL|wx.CENTER, 10)
panel.SetSizer(sizer) panel.Layout()
self.Centre()
definfo(self, evt): print self.bouton.affiche_info()
class
MyApp(wx.App): defOnInit(self): frame = Frame(None, "Test") self.SetTopWindow(frame)
frame.Show(True) return True app = MyApp(True) app.MainLoop()
Voila, il suffit de respecter la syntaxe des classes sous Python (rien à voir avec WxPython ton problème), quand tu dérive une classe, la première ligne de la fonction __init__ doit être Nom_Class_Dérivé.__init__(self,Arg) ! C'été juste ça ! ______ Aéra
|
|
|
Cette discussion est classé dans : bouton, button, self, wx, monbouton
Répondre à ce message
Sujets en rapport avec ce message
Comment lancer son application !!!!!!!!!! [ par steede ]
Voila, j'ai écrit (pompé) une malheureuse app (extraite d'un exemple "simple" de wx) et j'aimerais la faire fonctionner !!!!ci dessous la ligne de la
Socket : charger ip depuis fichier [ par Shinji ]
Bonjour @ ttes et @ ts, voici mon pb: j'essaye de faire une petite app client/serveur et j'aimerais pouvoir enregister l'ip/port du serveur dans un
Class has no attribute !?!? [ par RV2931 ]
BonjourJ'ai récupéré un petit programme "Hello world" d'un tuto wxPython de développez.com que voici :# !/usr/bin/python# -*- coding: iso885915 -*-im
Récupérer la valeur choisie dans une liste déroulante [ par amaury74 ]
Bonjours à tous,Ma question peu paraitre bête mais je n'ai pas trouvé de réponse claire.Voila: j'ai programmé une interface graphique avec wx.Python.
Comment Afficher les donnes d'une BD dans WXGRID ??? [ par medmst ]
slt a tousmon probleme est .. comment afficher les donnees d'un bd dans WXGRID ???mon code-source est : pas d'erreur de compilation mé il n'affiche ri
wxBoxSizer [ par Vonscott ]
Salut à tous,Ceci est mon tout premier POST sur le forum ( mais certainement pas le dernier )Jusque la, je travaillais sous PHP/MySQL et j'ai voulu dé
[QT4][python]probleme menu bouton [ par tsic ]
salut,Mon interface client a un menu et un boutton (au debut non actif) .à la connexion j'ai ajouter la ligne suivante:"self.ui.bouton_env.setEnabled(
Diverses questions et precision [ par sheorogath ]
Bonjour,je me remets au python mais plus serieusement cette fois ci :palors j'ai plusieurs question sur des choses sur lesquels je trouve que peux d'i
griser des textCtrl sous wx [ par mataxa ]
Je veux faire un petit programme qui fais l'analyse de 4 valeur. Mais j'ai besoin de faire 4 teste distinct et j'aimerais blocquer les valeur suivant
connexion python [ par tsic ]
Bonjour, Voilà, j'ai débuté recemment avec python et je veux faire une connexion client serveur (windows) par l'intermédiaire d'une interface QT Desig
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|