RV2931
Messages postés185Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention16 juillet 2016
-
19 févr. 2008 à 20:06
aera group
Messages postés382Date d'inscriptionmercredi 23 août 2006StatutMembreDernière intervention 8 novembre 2010
-
20 févr. 2008 à 10:54
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"
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
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 20 févr. 2008 à 10:31
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 :