wxPython:将wx.TE_进程_输入蒙面文本Ctrl
在谷歌上搜索,我发现不可能在屏蔽文本Ctrl上使用wxPython:将wx.TE_进程_输入蒙面文本Ctrl,wxpython,textctrl,Wxpython,Textctrl,在谷歌上搜索,我发现不可能在屏蔽文本Ctrl上使用wx.TE_-PROCESS\u-ENTER,我自己尝试设置style=wx.TE_-PROCESS\u-ENTER,然后将其与wx.EVT_-TEXT\u-ENTER绑定,但什么都没有发生。我想做的是制作许多蒙面的TextCtrl,这样用户可以输入一些值,然后当enter按钮按下一个函数时,调用它进行计算 提前感谢我不知道为什么会这样,但是你可以通过绑定EVT_KEY_DOWN来模拟同样的事情。这里有一个例子: import wx import
wx.TE_-PROCESS\u-ENTER
,我自己尝试设置style=wx.TE_-PROCESS\u-ENTER
,然后将其与wx.EVT_-TEXT\u-ENTER
绑定,但什么都没有发生。我想做的是制作许多蒙面的TextCtrl,这样用户可以输入一些值,然后当enter按钮按下一个函数时,调用它进行计算
提前感谢我不知道为什么会这样,但是你可以通过绑定EVT_KEY_DOWN来模拟同样的事情。这里有一个例子:
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()
我不知道为什么这会吞噬那个事件,但是你可以通过绑定EVT_KEY_DOWN来模拟同样的事情。这里有一个例子:
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()
按照这个例子,我能够让它工作 本网站还解释说,如果未将样式设置为wx.TE\u PROCESS\u ENTER,则不能使用EVT\u TEXT\u ENTER
按照这个例子,我能够让它工作 本网站还解释说,如果未将样式设置为wx.TE\u PROCESS\u ENTER,则不能使用EVT\u TEXT\u ENTER
它工作得非常好,所以基本上使用
EVT\u向下键
可以捕捉我们在键盘上按下的所有内容,对吗?谢谢你的解决方案是的,非常感谢。偶尔您需要使用wx.WANTS\u CHARS样式添加,但总体EVT\u KEY\u DOWN是一种方法。或者EVT_CHAR。有关更多信息,请参阅。它工作得非常好,所以基本上使用EVT\u向下键
可以捕获我们在键盘上按下的所有内容,对吗?谢谢你的解决方案是的,非常感谢。偶尔您需要使用wx.WANTS\u CHARS样式添加,但总体EVT\u KEY\u DOWN是一种方法。或者EVT_CHAR。有关更多信息,请参阅。