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/