Searching on google and I found that is impossible to using wx.TE_PROCESS_ENTER
on masked TextCtrl, I try it myself to set style=wx.TE_PROCESS_ENTER
then bind it with wx.EVT_TEXT_ENTER
, but nothing happen. What I was trying to do is making many masked TextCtrl so user can input some value, then when enter button pressed a function called to do calculation on it.
Thanks in advance
I'm not sure why that's eating that event, but you can simulate the same thing by binding to EVT_KEY_DOWN instead. Here's one example:
import wx
import wx.lib.masked as masked
########################################################################
class MyPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent=parent)
control = ["Phone No", "(###) ###-#### x:###", "", 'F^-', "^\(\d{3}\) \d{3}-\d{4}", '','','']
maskText = masked.TextCtrl(self,
mask = control[1],
excludeChars = control[2],
formatcodes = control[3],
includeChars = "",
validRegex = control[4],
validRange = control[5],
choices = control[6],
choiceRequired = True,
defaultValue = control[7],
demo = True,
name = control[0],
style=wx.TE_PROCESS_ENTER)
maskText.Bind(wx.EVT_KEY_DOWN, self.onEnter)
#----------------------------------------------------------------------
def onEnter(self, event):
""""""
keycode = event.GetKeyCode()
if keycode == wx.WXK_RETURN or keycode == wx.WXK_NUMPAD_ENTER:
print "you pressed ENTER!"
event.Skip()
########################################################################
class MyFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Masked!")
panel = MyPanel(self)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
app.MainLoop()