是否可以将TextCtrl限制为仅在wxPython中接受数字?

Jer*_*rks 7 wxpython textctrl

我想要一个只接受数字的文本控件.(只需45或366之类的整数值)

做这个的最好方式是什么?

tom*_*m10 5

IntCtrlMasked Edit Control、 和NumCtrl都旨在通过不同级别的控制来做到这一点。查看“更多 Windows/控件”下的 wx 演示,了解它们是如何工作的。

(或者,如果您真的希望直接使用原始 TextCtrl 执行此操作,我认为您希望捕获 EVT_CHAR 事件,测试字符,如果允许字符,则调用 evt.Skip()。)


小智 5

我必须做类似的事情,检查字母数字代码.EVT_CHAR的提示是正确的:

class TestPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, -1)
        self.entry = wx.TextCtrl(self, -1)
        self.entry.Bind(wx.EVT_CHAR, self.handle_keypress)

    def handle_keypress(self, event):
        keycode = event.GetKeyCode()
        if keycode < 255:
            # valid ASCII
            if chr(keycode).isalnum():
                # Valid alphanumeric character
                event.Skip()
Run Code Online (Sandbox Code Playgroud)