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