Mega Code Archive

 
Categories / Python / GUI Pmw
 

Phone Number validation field

#Pmw copyright #Copyright 1997-1999 Telstra Corporation Limited, Australia  #Copyright 2000-2002 Really Good Software Pty Ltd, Australia #Permission is hereby granted, free of charge, to any person obtaining a copy  #of this software and associated documentation files (the "Software"), to deal  #in the Software without restriction, including without limitation the rights  #to use, copy, modify, merge, publish, distribute, sublicense, and/or sell  #copies of the Software, and to permit persons to whom the Software is furnished  #to do so, subject to the following conditions: #The above copyright notice and this permission notice shall be included in all  #copies or substantial portions of the Software. #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,  #INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A  #PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  #HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION  #OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE  #SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  import string from Tkinter import * from tkMessageBox import * import string def validIP(value):     valid = 0     try:         if len(value) >=7 and len(value) <= 15:             fields = string.splitfields(value, '.')             if len(fields) < 5:                 for field in fields:                     iV = string.atoi(field)                     if iV < 0 or iV > 255:                         valid = 0                         break                     else:                         valid = 1     except:         pass     if not valid:         showerror(title='Invalid IP Address',                   message='Format: nnn.nnn.nnn.nnn\n-1 < nnn < 256')     return (value, 0, valid) def validCP(value):     valid = 0     try:         fields = string.splitfields(value, '-')         for field in fields:             iV = string.atoi(field)             if iV < 1 or iV > 100:                 valid = 0                 break             else:                 valid = 1     except:         pass     if not valid:         showerror(title='Invalid Card-Port',                   message='Format: nnn-nnn\n0 < nnn < 101'),     return (value, 0, valid) def validLName(value):     valid = 0     try:         if len(value) >= 3:             ucFTC = string.upper(value[:2])             if ucFTC == 'CP':                 valid = 1     except:         pass     if valid:         retval = 'CP' + value[2:]         replace = 1     else:         showerror(title='Invalid Logical Name',                   message='Format: CP+<text>')         retval = value         replace = 0     return (retval, replace, valid) class EntryFormatting:     def __init__(self, master):         frame = Frame(master)         Label(frame, text='   ').grid(row=0, column=0,sticky=W)         Label(frame, text='   ').grid(row=0, column=3,sticky=W)         self._ipaddr = self.createField(frame, width=16, row=0, col=2,                              label='Phone Number:\n(nnn)-nnn-nnn',                              format=self.fmtPhone, enter=self.activate)         frame.pack(side=TOP, padx=15, pady=15)              def createField(self, master, label='', text='', width=1,                     format=None, enter=None, row=0, col=0):         Label(master, text=label).grid(row=row, column=col-1,                                        padx=15, sticky=W)         id = Entry(master, text=text, width=width, takefocus=1)         id.bind('<KeyRelease>', format)         id.bind('<Return>',   enter)         id.grid(row=row, column=col, pady=10, sticky=W)         return id          def activate(self, event):         print '<Return>: value is', event.widget.get()     def fmtPhone(self, event):         current = event.widget.get()         if len(current) == 1:             if event.char in '0123456789':                 current = '1-(%s' % current             else:                 event.widget.bell()                 current = ''         elif len(current) == 6:             current = '%s)-' % current         elif len(current) == 11:             current = '%s-' % current         event.widget.delete(0, END)         event.widget.insert(0, current)     def fmtSSN(self, event):         current = event.widget.get()         if len(current) in [3, 6]:             current = '%s-' % current         event.widget.delete(0, END)         event.widget.insert(0, current) ###################################################################### root = Tk() root.option_add('*Font', 'Verdana 10 bold') root.option_add('*Entry.Font', 'Courier 10') root.title('Entry  Formatting') top = EntryFormatting(root) quit = Button(root, text='Quit', command=root.destroy) quit.pack(side = 'bottom')   root.mainloop()