Wax: problem subclassing TextBox

Hans Nowak hans at zephyrfalcon.org
Wed Oct 18 15:17:18 EDT 2006


alex23 wrote:
> Hey everyone,
> 
> I've just started looking at Wax and have hit a problem I can't
> explain. I want an app to respond to every character input into a
> TextBox.
> 
> Here's a simple, working example:
> 
> +++
> from wax import *
> 
> class MainFrame(VerticalFrame):
>   def Body(self):
>     self.search = TextBox(self)
>     self.search.OnChar = self.OnChar
>     self.AddComponent(self.search, expand='h', border=5)
> 
>   def OnChar(self, event):
>     print 'OnChar:', event.GetKeyCode()
>     event.Skip()
> 
> app = Application(MainFrame)
> app.Run()
> +++
> 
> This displays a TextBox and entering "abcd" results in:
> 
>   OnChar: 97
>   OnChar: 98
>   OnChar: 99
>   OnChar: 100
> 
> Rather than defining the OnChar hook on the main frame, though, it
> makes more sense (to me) to be defined on the TextBox itself, so I
> tried subclassing it as follows:
> 
> +++
> class NewTextBox(TextBox):
>   def OnChar(self, event):
>     print 'on char', event.GetKeyCode()
>     event.Skip()
> 
> class MainFrame(VerticalFrame):
>   def Body(self):
>     self.search = NewTextBox(self)
>     self.AddComponent(self.search, expand='h', border=5)
> +++
> 
> With the same input of 'abcd', I get the following:
>   on char 97
>   on char 97
>   on char 98
>   on char 98
>   on char 99
>   on char 99
>   on char 100
>   on char 100

Heh, that's a bug.  As a temporary solution, go to textbox.py and 
comment out the line in the __events__ dict that says 'Char': wx.EVT_CHAR.

I will need to fix the way Wax handles events like these; this will 
probably be solved in the next release.

-- 
Hans Nowak
http://zephyrfalcon.org/




More information about the Python-list mailing list