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/ -- http://mail.python.org/mailman/listinfo/python-list