Reputation: 107
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
Upvotes: 1
Views: 4522
Reputation: 351
Following this example I was able to get it working
https://www.programcreek.com/python/example/4695/wx.TE_PROCESS_ENTER
def __init__(self):
wx.Frame.__init__(self, None,
pos=wx.DefaultPosition, size=wx.Size(450, 100),
style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION |
wx.CLOSE_BOX | wx.CLIP_CHILDREN,
title="BRUNO")
panel = wx.Panel(self)
ico = wx.Icon('boy.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(ico)
my_sizer = wx.BoxSizer(wx.VERTICAL)
lbl = wx.StaticText(panel,
label="Bienvenido Sir. How can I help you?")
my_sizer.Add(lbl, 0, wx.ALL, 5)
self.txt = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER,
size=(400, 30))
self.txt.SetFocus()
self.txt.Bind(wx.EVT_TEXT_ENTER, self.OnEnter)
my_sizer.Add(self.txt, 0, wx.ALL, 5)
panel.SetSizer(my_sizer)
self.Show()
speak.Speak('''Welcome back Sir, Broono at your service.''')
This website also explains that you can't use EVT_TEXT_ENTER if you haven't set the style to wx.TE_PROCESS_ENTER
https://wxpython.org/Phoenix/docs/html/wx.TextCtrl.html
Upvotes: 0
Reputation: 33111
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()
Upvotes: 1