Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | title = 'Pmw.EntryField demonstration' |
2 | ||
3 | # Import Pmw from this directory tree. | |
4 | import sys | |
5 | sys.path[:0] = ['../../..'] | |
6 | ||
7 | import time | |
8 | import Tkinter | |
9 | import Pmw | |
10 | ||
11 | class Demo: | |
12 | def __init__(self, parent): | |
13 | # Create and pack the EntryFields. | |
14 | self._any = Pmw.EntryField(parent, | |
15 | labelpos = 'w', | |
16 | label_text = 'Any:', | |
17 | validate = None, | |
18 | command = self.execute) | |
19 | self._real = Pmw.EntryField(parent, | |
20 | labelpos = 'w', | |
21 | value = '55.5', | |
22 | label_text = 'Real (10.0 to 99.0):', | |
23 | validate = {'validator' : 'real', | |
24 | 'min' : 10, 'max' : 99, 'minstrict' : 0}, | |
25 | modifiedcommand = self.changed) | |
26 | self._odd = Pmw.EntryField(parent, | |
27 | labelpos = 'w', | |
28 | label_text = 'Odd length:', | |
29 | validate = self.custom_validate, | |
30 | value = 'ABC') | |
31 | self._date = Pmw.EntryField(parent, | |
32 | labelpos = 'w', | |
33 | label_text = 'Date (in 2000):', | |
34 | value = '2000/2/29', | |
35 | validate = {'validator' : 'date', | |
36 | 'min' : '2000/1/1', 'max' : '2000/12/31', | |
37 | 'minstrict' : 0, 'maxstrict' : 0, | |
38 | 'format' : 'ymd'}, | |
39 | ) | |
40 | now = time.localtime(time.time()) | |
41 | self._date2 = Pmw.EntryField(parent, | |
42 | labelpos = 'w', | |
43 | label_text = 'Date (d.m.y):', | |
44 | value = '%d.%d.%d' % (now[2], now[1], now[0]), | |
45 | validate = {'validator' : 'date', | |
46 | 'format' : 'dmy', 'separator' : '.'}, | |
47 | ) | |
48 | self._time = Pmw.EntryField(parent, | |
49 | labelpos = 'w', | |
50 | label_text = 'Time (24hr clock):', | |
51 | value = '8:00:00', | |
52 | validate = {'validator' : 'time', | |
53 | 'min' : '00:00:00', 'max' : '23:59:59', | |
54 | 'minstrict' : 0, 'maxstrict' : 0}, | |
55 | ) | |
56 | self._comma = Pmw.EntryField(parent, | |
57 | labelpos = 'w', | |
58 | label_text = 'Real (with comma):', | |
59 | value = '123,456', | |
60 | validate = {'validator' : 'real', 'separator' : ','}, | |
61 | ) | |
62 | ||
63 | entries = (self._any, self._real, self._odd, self._date, self._date2, | |
64 | self._time, self._comma) | |
65 | ||
66 | for entry in entries: | |
67 | entry.pack(fill='x', expand=1, padx=10, pady=5) | |
68 | Pmw.alignlabels(entries) | |
69 | ||
70 | self._any.component('entry').focus_set() | |
71 | ||
72 | def changed(self): | |
73 | print 'Text changed, value is', self._real.getvalue() | |
74 | ||
75 | def execute(self): | |
76 | print 'Return pressed, value is', self._any.getvalue() | |
77 | ||
78 | # This implements a custom validation routine. It simply checks | |
79 | # if the string is of odd length. | |
80 | def custom_validate(self, text): | |
81 | print 'text:', text | |
82 | if len(text) % 2 == 0: | |
83 | return -1 | |
84 | else: | |
85 | return 1 | |
86 | ||
87 | ###################################################################### | |
88 | ||
89 | # Create demo in root window for testing. | |
90 | if __name__ == '__main__': | |
91 | root = Tkinter.Tk() | |
92 | Pmw.initialise(root) | |
93 | root.title(title) | |
94 | ||
95 | exitButton = Tkinter.Button(root, text = 'Exit', command = root.destroy) | |
96 | exitButton.pack(side = 'bottom') | |
97 | widget = Demo(root) | |
98 | root.mainloop() |