title
= 'Pmw.Counter demonstration'
# Import Pmw from this directory tree.
sys
.path
[:0] = ['../../..']
def __init__(self
, parent
):
# Need to use long ints here because on the Macintosh the maximum size
# of an integer is smaller than the value returned by time.time().
now
= (long(time
.time()) / 300) * 300
self
._date
= Pmw
.Counter(parent
,
label_text
= 'Date (4-digit year):',
time
.strftime('%d/%m/%Y', time
.localtime(now
)),
entryfield_command
= self
.execute
,
entryfield_validate
= {'validator' : 'date', 'format' : 'dmy'},
datatype
= {'counter' : 'date', 'format' : 'dmy', 'yyyy' : 1})
self
._isodate
= Pmw
.Counter(parent
,
label_text
= 'ISO-Date (4-digit year):',
time
.strftime('%Y-%m-%d', time
.localtime(now
)),
entryfield_command
= self
.execute
,
entryfield_validate
= {'validator' : 'date', 'format' : 'ymd',
datatype
= {'counter' : 'date', 'format' : 'ymd', 'yyyy' : 1,
self
._time
= Pmw
.Counter(parent
,
time
.strftime('%H:%M:%S', time
.localtime(now
)),
entryfield_validate
= {'validator' : 'time',
'min' : '00:00:00', 'max' : '23:59:59',
'minstrict' : 0, 'maxstrict' : 0},
datatype
= {'counter' : 'time', 'time24' : 1},
self
._real
= Pmw
.Counter(parent
,
label_text
= 'Real (with comma)\nand extra\nlabel lines:',
entryfield_value
= '1,5',
datatype
= {'counter' : 'real', 'separator' : ','},
entryfield_validate
= {'validator' : 'real',
'min' : '-2,0', 'max' : '5,0',
self
._custom
= Pmw
.Counter(parent
,
entryfield_value
= specialword
[:4],
datatype
= _custom_counter
,
entryfield_validate
= _custom_validate
)
self
._int
= Pmw
.Counter(parent
,
label_text
= 'Vertical integer:',
entryfield_validate
= {'validator' : 'integer',
counters
= (self
._date
, self
._isodate
, self
._time
, self
._real
,
Pmw
.alignlabels(counters
)
counter
.pack(fill
='both', expand
=1, padx
=10, pady
=5)
self
._int
.pack(padx
=10, pady
=5)
print 'Return pressed, value is', self
._date
.get()
specialword
= 'Monti Python ik den Holie Grailen (Bok)'
def _custom_validate(text
):
if string
.find(specialword
, text
) == 0:
def _custom_counter(text
, factor
, increment
):
# increment is ignored here.
if string
.find(specialword
, text
) == 0:
if length
>= len(specialword
):
raise ValueError, 'maximum length reached'
return specialword
[:length
+ 1]
raise ValueError, 'empty string'
return specialword
[:length
- 1]
raise ValueError, 'bad string ' + text
######################################################################
# Create demo in root window for testing.
if __name__
== '__main__':
exitButton
= Tkinter
.Button(root
, text
= 'Exit', command
= root
.destroy
)
exitButton
.pack(side
= 'bottom')