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()
Related examples in the same category