Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython:将wx.TE_进程_输入蒙面文本Ctrl_Wxpython_Textctrl - Fatal编程技术网

wxPython:将wx.TE_进程_输入蒙面文本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

在谷歌上搜索,我发现不可能在屏蔽文本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.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。有关更多信息,请参阅。