Accueil > Forum > > > > héritage de wxObject et polymorphisme ??
héritage de wxObject et polymorphisme ??
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ée 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
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
Fenetre + menu + bouton pour un débutant [ par Yachas ]
Bonjour, Je débute entièrement dans Python et tente de créer une simple application avec « wxPython » Je suis désolé de vous déranger pour des choses
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
Aide pour acquisition d'une pression [ par sebfluo ]
Bonjour a tous.Je suis entrain de réaliser un petit programme avec une interface graphique(réalisée avec QT designer et PyQT) permettant d'acquérir un
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(
classe abstraite [ par oxkao ]
bonjours,voili voilou je me suis mis à python et je pensais (en tant que langage objet) retrouver les mêmes principe qu'en C++ ou java je cherche donc
Livres en rapport
|
Derniers Blogs
ENUMERABLECOLLECTIONENUMERABLECOLLECTION par Matthieu MEZIL
Prenons le scénario suivant. On utilise MVVM. On a les deux classes suivantes dans le model : public class Child { } public class Parent { private ObservableCollection < Child > _children; public ObservableCollection < Child > Children { get {...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [HS] CHROME 6 + MOI = COUP DE GUEULE ![HS] CHROME 6 + MOI = COUP DE GUEULE ! par JeremyJeanson
Attention, le poste qui suit n'est pas la complainte d'une personne : Qui n'aime pas Chrome. D'un anti Google. D'un développeur qui a un poil énorme dans la main. Ceux qui me fréquentent savent que je change de navigateur favori tous les 2 ou 3 mois afin ...
Cliquez pour lire la suite de l'article par JeremyJeanson [WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7[WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7 par Audrey
Lors de la réalisation de ma 2ème application Windows Phone 7, j'ai souhaité utiliser un WrapPanel pour afficher plusieurs photos. Mais le contrôle WrapPanel ne fait pas parti de la liste des contrôles inclus dans le SDK de la version Beta des outils pour...
Cliquez pour lire la suite de l'article par Audrey [WP7] BESOIN D'AVOIR DES DONNéES EN CACHE[WP7] BESOIN D'AVOIR DES DONNéES EN CACHE par Nicolas
Les développeurs ASP.NET ont l'habitude de mettre des données en cache pour éviter de requêter a chaque fois la base de données. Et il est toujours utilie de penser que vos utilisateurs mobiles n'ont pas troujours une super connexion 3G/WIFI et un for...
Cliquez pour lire la suite de l'article par Nicolas [TFS] COMMENT FORCER LA SAISIE D'UN AREA OU ITERATION[TFS] COMMENT FORCER LA SAISIE D'UN AREA OU ITERATION par cyril
Lorsque l'on créé un Work Item dans TFS, il est possible de le classer dans un "area" et dans une "iteration". Dans la plupart des types de projet, un "area" correspond à une catégorie, une "iteration" à un numéro de version. Il est possible de cré...
Cliquez pour lire la suite de l'article par cyril
Forum
RE : PYTHON 3.0RE : PYTHON 3.0 par aera group
Cliquez pour lire la suite par aera group RE : PYTHON 3.0RE : PYTHON 3.0 par xeolin
Cliquez pour lire la suite par xeolin RE : PYTHON 3.0RE : PYTHON 3.0 par aera group
Cliquez pour lire la suite par aera group
Logiciels
uTorrent (2.0.4)UTORRENT (2.0.4)C'est un client BitTorrent très puissant et très performant. Comme son nom l'indique, uTorrent (m... Cliquez pour télécharger uTorrent Bureau de Gestion - ERP Devis Facturation (2.02)BUREAU DE GESTION - ERP DEVIS FACTURATION (2.02)- Version gratuite du 10/06/2010
Le Bureau de Gestion est un logiciel dédié à la gestion de l'en... Cliquez pour télécharger Bureau de Gestion - ERP Devis Facturation 4Videosoft Transfert iPod Mac (3.2.08)4VIDEOSOFT TRANSFERT IPOD MAC (3.2.08)4Videosoft Transfert iPod-Mac caractérise principalement à transférer les fichiers iPod vers Mac.... Cliquez pour télécharger 4Videosoft Transfert iPod Mac 4Videosoft HD Convertisseur (3.3.08)4VIDEOSOFT HD CONVERTISSEUR (3.3.08)Etant le meilleur HD Vidéo Convertisseur, 4Videosoft HD Convertisseur, vous pouvez regarder la vi... Cliquez pour télécharger 4Videosoft HD Convertisseur 4Videosoft Transfert iPad Mac (3.2.08)4VIDEOSOFT TRANSFERT IPAD MAC (3.2.08)4Videosoft Transfert iPad-Mac est un logiciel managérial iPad professionnel qui a des fonctions i... Cliquez pour télécharger 4Videosoft Transfert iPad Mac
|