Python 3 WxPython Textctrl Widget Validator Example to Validate Using AJAX Realtime Data as it is Written GUI Desktop App Full Project For Beginners

Python 3 WxPython Textctrl Widget Validator Example to Validate Using AJAX Realtime Data as it is Written GUI Desktop App Full Project For Beginners


Welcome folks today in this blog post we will be looking at wxpython textctrl widget realtime validation using ajax. All the full source code of the application is given below.



Get Started



In order to get started you need to install the below library using the pip command as shown below


pip install wxpython


After installing this library you need to make an file and copy paste the following code


import wx
import string

about_txt = """\
The validator used in this example will validate the input on the fly
instead of waiting until the okay button is pressed.  The first field
will not allow digits to be typed, the second will allow anything
and the third will not allow alphabetic characters to be entered.

class CharValidator(wx.PyValidator):
    def __init__(self, flag):
         self.flag = flag
         self.Bind(wx.EVT_CHAR, self.OnChar)

    def Clone(self):
         Note that every validator must implement the Clone() method.
         return CharValidator(self.flag)

    def Validate(self, win):
         return True

    def TransferToWindow(self):
         return True 

    def TransferFromWindow(self):
         return True

    def OnChar(self, evt):
         key = chr(evt.GetKeyCode())
         if self.flag == "no-alpha" and key in string.letters:
         if self.flag == "no-digit" and key in string.digits:

class MyDialog(wx.Dialog):
    def __init__(self):
        wx.Dialog.__init__(self, None, -1, "Validators: behavior modification")

        # Create the text controls
        about   = wx.StaticText(self, -1, about_txt)
        name_l  = wx.StaticText(self, -1, "Name:")
        email_l = wx.StaticText(self, -1, "Email:")
        phone_l = wx.StaticText(self, -1, "Phone:")
        name_t  = wx.TextCtrl(self, validator=CharValidator("no-digit"))
        email_t = wx.TextCtrl(self, validator=CharValidator("any"))
        phone_t = wx.TextCtrl(self, validator=CharValidator("no-alpha"))

        # Use standard button IDs
        okay   = wx.Button(self, wx.ID_OK)
        cancel = wx.Button(self, wx.ID_CANCEL)

        # Layout with sizers
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(about, 0, wx.ALL, 5)
        sizer.Add(wx.StaticLine(self), 0, wx.EXPAND|wx.ALL, 5)
        fgs = wx.FlexGridSizer(3, 2, 5, 5)
        fgs.Add(name_l, 0, wx.ALIGN_RIGHT)
        fgs.Add(name_t, 0, wx.EXPAND)
        fgs.Add(email_l, 0, wx.ALIGN_RIGHT)
        fgs.Add(email_t, 0, wx.EXPAND)
        fgs.Add(phone_l, 0, wx.ALIGN_RIGHT)
        fgs.Add(phone_t, 0, wx.EXPAND)
        sizer.Add(fgs, 0, wx.EXPAND|wx.ALL, 5)

        btns = wx.StdDialogButtonSizer()
        sizer.Add(btns, 0, wx.EXPAND|wx.ALL, 5)


app = wx.PySimpleApp()

dlg = MyDialog()



See also  Python 3 Google Keep API Module to Create Notes Using gkeepapi Library Full Project For Beginners


If you execute the above python script by typing the below command





Leave a Reply