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 :

surcharge d'une méthode


Sujet :

wxPython

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut surcharge d'une méthode
    Bonjour à tous,

    Ma question semble très simple et j'ai l'impression de ne toujours pas maîtriser les class. C'est pourquoi j'aimerais comprendre l'exemple suivant :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    # !/usr/bin/python
    # -*- coding:Latin-1 -*-
     
    import wx
    import wx.richtext as rt
     
    class WidgetRichText(rt.RichTextCtrl):
    	def __init__(self, parent):
    		rt.RichTextCtrl.__init__(self,parent,size)
    		rt.RichTextCtrl(parent, size)
     
    	def WriteText(self,text):
    		wx.CallAfter(myrichtext1.SetFocus)
    		myrichtext1.Freeze()
    		myrichtext1.BeginTextColour((255, 0, 0))
    		myrichtext1.WriteText("class WidgetRichText")
    		myrichtext1.EndTextColour()
    		myrichtext1.Thaw()
     
     
    class Fentre_prin(wx.Frame):
    	def __init__(self, parent, title): 
    		wx.Frame.__init__(self, parent, -1, title)
    		### ma_scroll_window :
    		ma_scroll_window = wx.ScrolledWindow(self)
    		ma_scroll_window.SetBackgroundColour(wx.WHITE)
    		ma_scroll_window.SetScrollbars(20, 20, 55, 40)
    		### Bouton :
    		b1 = wx.Button(ma_scroll_window, -1, u"Quitter")
    		self.Bind(wx.EVT_BUTTON, self.quitter, b1)
    		### RichTextCtrl :
    		myrichtext1 = rt.RichTextCtrl(ma_scroll_window,size=(700,400))
    		myrichtext1.WriteText('class Fentre_prin')
    		# Création du sizer et positionnement des wigets :
    		sizer = wx.BoxSizer(wx.VERTICAL)
    		sizer.Add(b1, 0, wx.ALL, 5)
    		sizer.Add(myrichtext1, 0, wx.ALL, 5)
    		# Le sizer est lié au conteneur :
    		ma_scroll_window.SetSizer(sizer)
    		ma_scroll_window.Layout()
     
    	def quitter(self, evt):
    		self.Close()
     
     
    class MyApp(wx.App):
        def OnInit(self):
            frame = Fentre_prin(None, u"Début")
            self.SetTopWindow(frame)
            frame.Show(True)
            return True
     
    try:
    	app = MyApp()
     
    except:
    	app = MyApp(redirect=True)
     
    app.MainLoop()
    Pourquoi la méthode WriteText() que je définis dans WidgetRichText reste t'elle sans effet ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    c'est parce que dans le __init__ de fentre_prin, tu instancie un rt.RichTextCtrl au lieu d'un WidgetRichText.

    Après un peu de nettoyage:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    class WidgetRichText(rt.RichTextCtrl):
        def __init__(self, parent,size):
            rt.RichTextCtrl.__init__(self,parent,-1,size=size)
            #rt.RichTextCtrl(parent, size)
     
        def WriteText(self,text):
     
            wx.CallAfter(self.SetFocus)
            self.Freeze()
            self.BeginTextColour((255, 0, 0))
            rt.RichTextCtrl.WriteText(self,"class WidgetRichText")
            self.EndTextColour()
            self.Thaw()
     
     
    class Fentre_prin(wx.Frame):
        def __init__(self, parent, title): 
            wx.Frame.__init__(self, parent, -1, title)
            ### ma_scroll_window :
            ma_scroll_window = wx.ScrolledWindow(self)
            ma_scroll_window.SetBackgroundColour(wx.WHITE)
            ma_scroll_window.SetScrollbars(20, 20, 55, 40)
    	### Bouton :
            b1 = wx.Button(ma_scroll_window, -1, u"Quitter")
            self.Bind(wx.EVT_BUTTON, self.quitter, b1)
    	### RichTextCtrl :
            myrichtext1 = WidgetRichText(ma_scroll_window,size=(700,400))
            myrichtext1.WriteText('class Fentre_prin')
    	# Création du sizer et positionnement des wigets :
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(b1, 0, wx.ALL, 5)
            sizer.Add(myrichtext1, 0, wx.ALL, 5)
    	# Le sizer est lié au conteneur :
            ma_scroll_window.SetSizer(sizer)
            ma_scroll_window.Layout()
     
        def quitter(self, evt):
            self.Close()
    Le reste est pareil. Je ne sais pas pourquoi tu fais Freeze et Thaw, appelés dans la même méthode ces appels n'auront aucun effet.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    Je te remercie pour tes explications. Mes erreurs étaient grossières mais cela me permet au moins de mieux comprendre. Merci.

    Quant aux méthodes Freeze() et Thaw(), je les supprime.

    J'ai l'impression que la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wx.CallAfter(self.SetFocus)
    n'est également d'aucune utilité...

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

Discussions similaires

  1. Forcer la surcharge d'une méthode
    Par BakaOnigiri dans le forum Langage
    Réponses: 12
    Dernier message: 30/04/2008, 14h13
  2. Surcharge d'une méthode
    Par Pilloutou dans le forum C#
    Réponses: 8
    Dernier message: 10/10/2007, 14h53
  3. Réponses: 2
    Dernier message: 10/05/2007, 17h29
  4. [Débutant] Surcharge d'une méthode
    Par HaTnuX dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2007, 19h27
  5. [MFC] Surcharge d'une méthode CListCtrl
    Par semenzato dans le forum MFC
    Réponses: 8
    Dernier message: 22/12/2005, 22h05

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