Salome HOME
Modif V6_4_°
[tools/eficas.git] / Pmw / Pmw_1_2 / tests / Tkinter_test.py
1 # Tests for basic Tkinter widgets.
2
3 import Tkinter
4 import Test
5
6 Test.initialise()
7 testData = ()
8
9 if Tkinter.TkVersion >= 8.0:
10   button_num = 31
11   frame_num = 16
12   menu_num = 20
13   menubutton_num = 32
14 else:
15   button_num = 30
16   frame_num = 15
17   menu_num = 19
18   menubutton_num = 31
19
20 c = Tkinter.Button
21 tests = (
22   (c.pack, ()),
23   (Test.num_options, (), button_num),
24   ('text', 'Hello World'),
25   ('background', 'lightsteelblue1'),
26   ('foreground', 'seagreen4'),
27   ('command', Test.callback),
28   (c.flash, ()),
29   (c.invoke, (), '1'),
30 )
31 testData = testData + ((c, ((tests, {}),)),)
32
33 c = Tkinter.Canvas
34 tests = (
35   (c.pack, ()),
36   (Test.num_options, (), 27),
37   ('background', 'aliceblue'),
38   (c.create_oval, (100, 100, 200, 200),
39       {'fill' : 'lightsteelblue1', 'tags' : 'circle'}, 1),
40   (c.create_rectangle, (200, 100, 300, 200),
41       {'fill' : 'lightsteelblue2', 'tags' : 'square'}, 2),
42   (c.create_text, (0, 200),
43       {'text' : 'Hello, world', 'tags' : 'words', 'anchor' : 'w'}, 3),
44   (c.addtag_withtag, ('lightsteelblue1', 'circle')),
45   (c.bbox, ('circle', 'square'), (99, 99, 301, 201)),
46   (c.tag_bind, ('circle', '<1>', Test.callback)),
47   (c.tag_bind, 'circle', '<Button-1>'),
48   (c.tag_unbind, ('circle', '<1>')),
49   (c.canvasx, 100, 100.0),
50   (c.canvasy, 100, 100.0),
51   (c.coords, 'circle', [100.0, 100.0, 200.0, 200.0]),
52   (c.coords, ('circle', 0, 0, 300, 300), []),
53   (c.coords, 'circle', [0.0, 0.0, 300.0, 300.0]),
54   (c.find_withtag, 'lightsteelblue1', (1,)),
55   (c.focus, 'circle', ''),
56   (c.gettags, 'circle', ('circle', 'lightsteelblue1')),
57   (c.icursor, ('words', 7)),
58   (c.index, ('words', 'insert'), 7),
59   (c.insert, ('words', 'insert', 'cruel ')),
60   (c.itemconfigure, 'circle', {'fill': 'seagreen4'}),
61   (c.itemcget, ('circle', 'fill'), 'seagreen4'),
62   (c.lower, 'words'),
63   (c.move, ('square', -50, -50)),
64   (c.tkraise, ('words', 'circle')),
65   (c.scale, ('circle', 150, 150, 1.0, 0.5)),
66   (c.select_from, ('words', 0)),
67   (c.select_to, ('words', 'end')),
68   (c.delete, 'square'),
69   (c.type, 'circle', 'oval'),
70   (c.dtag, 'lightsteelblue1'),
71 )
72 testData = testData + ((c, ((tests, {}),)),)
73
74 c = Tkinter.Checkbutton
75 tests = (
76   (c.pack, ()),
77   (Test.num_options, (), 36),
78   ('text', 'Hello World'),
79   ('background', 'lightsteelblue1'),
80   ('foreground', 'seagreen4'),
81   ('command', Test.callback),
82   (c.flash, ()),
83   (c.invoke, (), '1'),
84 )
85 testData = testData + ((c, ((tests, {}),)),)
86
87 c = Tkinter.Entry
88 tests = (
89   (c.pack, ()),
90   (Test.num_options, (), 28),
91   ('background', 'lightsteelblue1'),
92   (c.insert, ('insert', 'Hello, Brian!')),
93   (c.delete, (7, 12)),
94   (c.icursor, 7),
95   (c.insert, ('insert', 'world')),
96   (c.get, (), 'Hello, world!'),
97   (c.index, 'insert', 12),
98   (c.selection_from, 7),
99   (c.selection_to, '12'),
100 )
101 testData = testData + ((c, ((tests, {}),)),)
102
103 c = Tkinter.Frame
104 tests = (
105   (c.pack, ()),
106   (Test.num_options, (), frame_num),
107   ('background', 'lightsteelblue1'),
108   ('width', 300),
109   ('height', 50),
110   ('background', 'lightsteelblue1'),
111 )
112 testData = testData + ((c, ((tests, {}),)),)
113
114 c = Tkinter.Label
115 tests = (
116   (c.pack, ()),
117   (Test.num_options, (), 25),
118   ('text', 'Hello World'),
119   ('background', 'lightsteelblue1'),
120   ('foreground', 'seagreen4'),
121   ('image', Test.earthris),
122 )
123 testData = testData + ((c, ((tests, {}),)),)
124
125 c = Tkinter.Listbox
126 tests = (
127   (c.pack, ()),
128   (Test.num_options, (), 23),
129   ('background', 'lightsteelblue1'),
130   ('foreground', 'seagreen4'),
131   (c.insert, (0, 'ABC', 'DEF', 'GHI', 'XXXXXXXXXXXX')),
132   (c.activate, 1),
133   (c.select_set, (2, 3)),
134   (c.curselection, (), ('2', '3')),
135   (c.delete, 1),
136   (c.get, 1, 'GHI'),
137   (c.get, (0, 1), ('ABC', 'GHI')),
138   (c.index, 'end', 3),
139   (c.nearest, 1, 0),
140   (c.see, 1),
141   (c.size, (), 3),
142 )
143 testData = testData + ((c, ((tests, {}),)),)
144
145 c = Tkinter.Menu
146 tests = (
147   (Test.num_options, (), menu_num),
148   ('background', 'lightsteelblue1'),
149   ('foreground', 'seagreen4'),
150   (c.add_command, (),
151       {'background': 'lightsteelblue2', 'label': 'Hello World'}),
152   (c.add_checkbutton, (),
153       {'background': 'lightsteelblue2', 'label': 'Charm'}),
154   (c.post, (100, 100)),
155   (c.activate, 1),
156   (c.entryconfigure, 'Hello World', {'background': 'aliceblue'}),
157   (c.entrycget, ('Hello World', 'background'), 'aliceblue'),
158   (c.index, 'end', 2),
159   ('tearoff', 0),
160   (c.index, 'end', 1),
161   (c.insert_radiobutton, 'Charm',
162       {'background': 'lightsteelblue2', 'label': 'Niceness',
163           'command': Test.callback}),
164   (c.invoke, 'Niceness', '1'),
165   (c.delete, 'Charm'),
166   (c.type, 'Hello World', 'command'),
167   (c.yposition, 'Hello World', 2),
168   (c.unpost, ()),
169 )
170 testData = testData + ((c, ((tests, {}),)),)
171
172 c = Tkinter.Menubutton
173 tests = (
174   (c.pack, ()),
175   (Test.num_options, (), menubutton_num),
176   ('text', 'Hello World'),
177   ('background', 'lightsteelblue1'),
178   ('foreground', 'seagreen4'),
179 )
180 testData = testData + ((c, ((tests, {}),)),)
181
182 c = Tkinter.Message
183 tests = (
184   (c.pack, ()),
185   (Test.num_options, (), 21),
186   ('text', 'Hello World'),
187   ('background', 'lightsteelblue1'),
188   ('foreground', 'seagreen4'),
189   ('text', 'Hello\nCruel Cruel World'),
190   ('borderwidth', 100),
191   ('justify', 'center'),
192   ('justify', 'right'),
193   ('justify', 'left'),
194 )
195 testData = testData + ((c, ((tests, {}),)),)
196
197 c = Tkinter.Radiobutton
198 tests = (
199   (c.pack, ()),
200   (Test.num_options, (), 35),
201   ('text', 'Hello World'),
202   ('value', 'Foo Bar'),
203   ('variable', Test.stringvar),
204   ('background', 'lightsteelblue1'),
205   ('foreground', 'seagreen4'),
206   ('text', 'Hello\nCruel Cruel World'),
207   ('command', Test.callback),
208   (c.select, ()),
209   (Test.stringvar.get, (), 'Foo Bar'),
210   (c.flash, ()),
211   (c.invoke, (), '1'),
212   (c.deselect, ()),
213   (Test.stringvar.get, (), ''),
214 )
215 testData = testData + ((c, ((tests, {}),)),)
216
217 c = Tkinter.Scale
218 tests = (
219   (c.pack, ()),
220   (Test.num_options, (), 33),
221   ('showvalue', 1),
222   ('orient', 'horizontal'),
223   ('from', 100.0),
224   ('to', 200.0),
225   ('variable', Test.floatvar),
226   ('background', 'lightsteelblue1'),
227   ('foreground', 'seagreen4'),
228   ('command', Test.callback1),
229   (c.set, 150.0),
230   (c.get, (), 150.0),
231   (c.get, 123, 'TypeError: too many arguments; expected 1, got 2'),
232 )
233 testData = testData + ((c, ((tests, {}),)),)
234
235 c = Tkinter.Scrollbar
236 tests = (
237   (c.pack, (), {'fill': 'x'}),
238   (Test.num_options, (), 20),
239   ('orient', 'horizontal'),
240   (Test.set_geom, (300, 50)),
241   (c.set, (0.3, 0.7)),
242   ('background', 'lightsteelblue1'),
243   ('troughcolor', 'aliceblue'),
244   (c.get, (), (0.3, 0.7)),
245   (c.activate, 'slider'),
246   (c.set, (0.5, 0.9)),
247   (c.delta, (0, 0), 0),
248   (c.fraction, (0, 0), 0),
249 )
250 testData = testData + ((c, ((tests, {}),)),)
251
252 c = Tkinter.Text
253 tests = (
254   (c.pack, ()),
255   (Test.num_options, (), 35),
256   ('background', 'lightsteelblue1'),
257   (c.insert, ('end', 'This little piggy is bold.', 'bold', '\n')),
258   (c.insert, ('end', 'This little piggy is in green.', 'green', '\n')),
259   (c.insert, ('end', 'This line is a mistake.\n')),
260   (c.insert, ('end', 'This little piggy is crossed out.', 'overstrike', '\n')),
261   (c.insert, ('end', 'This little piggy is raised.', 'raised', '\n')),
262   (c.insert, ('end', 'This little piggy is underlined.', 'underline', '\n')),
263   (c.tag_configure, 'bold', {'font': Test.font['variable']}),
264   (c.tag_configure, 'green', {'background': 'seagreen1'}),
265   (c.tag_configure, 'overstrike', {'overstrike': 1}),
266   (c.tag_configure, 'raised',
267       {'background': 'aliceblue', 'borderwidth': 2, 'relief': 'raised'}),
268   (c.tag_configure, 'underline', {'underline': 1}),
269   (c.compare, ('2.0', '<', 'end'), 1),
270   (c.delete, ('3.0', '4.0')),
271   (c.get, ('1.0', '1.4'), 'This'),
272   (c.index, 'end', '7.0'),
273   (c.mark_set, ('my_mark', '4.9')),
274   (c.mark_gravity, ('my_mark', 'right'), ''),
275   (c.mark_gravity, 'my_mark', 'right'),
276   (c.mark_names, (), ('my_mark', 'insert', 'current')),
277   (c.mark_unset, 'my_mark'),
278   (c.insert, ('end', '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n')),
279   (c.insert, ('end', 'This is the last line.')),
280   (c.scan_mark, (0, 20)),
281   (c.scan_dragto, (0, 0)),
282   (c.scan_dragto, (0, 20)),
283   (c.tag_add, ('green', '1.0', '1.4')),
284   (c.tag_cget, ('raised', 'background'), 'aliceblue'),
285   (c.tag_lower, 'green'),
286   (c.tag_names, (),
287       ('green', 'sel', 'bold', 'overstrike', 'raised', 'underline')),
288   (c.tag_nextrange, ('raised', '0.0'), ('4.0', '4.28')),
289   (c.tag_raise, 'green'),
290   (c.tag_ranges, 'green', ('1.0', '1.4', '2.0', '2.30')),
291   (c.tag_remove, ('green', '1.0', '1.4')),
292   (c.tag_ranges, 'green', ('2.0', '2.30')),
293   (c.tag_delete, 'green'),
294   (c.search, ('Gre.n', '0.0'), {'regexp': 1, 'nocase': 1}, '2.24'),
295   (c.search, ('Gre.n', '3.0', 'end'), {'regexp': 1, 'nocase': 1}, ''),
296   (c.see, 'end'),
297   (c.see, '0.0'),
298 )
299 testData = testData + ((c, ((tests, {}),)),)
300
301 #=============================================================================
302
303 # Grid command
304
305 def _makeGridButtons():
306   w = Test.currentWidget()
307   b1 = Tkinter.Button(w, text = 'Button 1')
308   b2 = Tkinter.Button(w, text = 'Button 2')
309   b3 = Tkinter.Button(w, text = 'Button 3')
310   b4 = Tkinter.Button(w, text = 'Button 4')
311   b5 = Tkinter.Button(w, text = 'Button 5')
312   b6 = Tkinter.Button(w, text = 'Button 6')
313   b7 = Tkinter.Button(w, text = 'Button 7')
314   b8 = Tkinter.Button(w, text = 'Button 8')
315
316   b1.grid(column=0, row=0)
317   b2.grid(column=1, row=0)
318   b3.grid(column=2, row=0, ipadx=50, ipady=50, padx=50, pady=50, sticky='nsew')
319   b4.grid(column=3, row=0)
320   b5.grid(column=0, row=1)
321   b6.grid(column=2, row=1, columnspan=2, rowspan=2, sticky='nsew')
322   b7.grid(column=0, row=2)
323   b8.grid(column=0, row=3, columnspan=4, padx=50, sticky='ew')
324
325 def _checkGridSlaves():
326   w = Test.currentWidget()
327   return len(w.grid_slaves())
328
329 def _checkGridInfo():
330   w = Test.currentWidget()
331   b8 = w.grid_slaves(column=0, row=3)[0]
332   info = b8.grid_info()
333   if info['in'] == w:
334     rtn = {}
335     for key, value in info.items():
336       if key != 'in':
337         rtn[key] = value
338     return rtn
339   return 'BAD'
340
341 def _checkGridForget():
342   w = Test.currentWidget()
343   b8 = w.grid_slaves(column=0, row=3)[0]
344   b8.grid_forget()
345   return w.grid_size()
346
347 # The -pad grid option was added in Tk 4.2.
348 # Could not do columnconfigure(0) before Tk 4.2.
349 if Tkinter.TkVersion >= 4.2:
350   padTest = {'pad': 25}
351   colTest = {'minsize': 100, 'pad': 25, 'weight': 1}
352   rowTest = {'minsize': 100, 'pad': 0, 'weight': 1}
353 else:
354   padTest = {'minsize': 100}
355   colTest = 'TclError: wrong # args: should be "grid columnconfigure master index ?-option value...?"'
356   rowTest = 'TclError: wrong # args: should be "grid rowconfigure master index ?-option value...?"'
357
358 c = Tkinter.Frame
359 tests = (
360   (c.pack, (), {'fill': 'both', 'expand': 1}),
361   (_makeGridButtons, ()),
362   # (c.grid_bbox, (1, 2), (85, 268, 85, 34)),
363   (c.grid_columnconfigure, (0, 'minsize'), 0),
364   (c.grid_columnconfigure, (0, 'weight'), 0),
365   (c.grid_columnconfigure, 0, {'minsize': 100, 'weight': 1}),
366   (c.grid_columnconfigure, 0, padTest),
367   (c.grid_columnconfigure, 0, {}, colTest),
368   (c.grid_columnconfigure, (0, 'minsize'), 100),
369   (c.grid_columnconfigure, (0, 'weight'), 1),
370   (c.location, (200, 100), (2, 0)),
371   (c.grid_propagate, (), 1),
372   (c.grid_propagate, 0),
373   (c.grid_propagate, (), 0),
374   (c.grid_rowconfigure, (0, 'minsize'), 0),
375   (c.grid_rowconfigure, (0, 'weight'), 0),
376   (c.grid_rowconfigure, 0, {'minsize': 100, 'weight': 1}),
377   (c.grid_rowconfigure, 0, {}, rowTest),
378   (c.grid_size, (), (4, 4)),
379   (_checkGridSlaves, (), 8),
380   (_checkGridInfo, (), {}, {'column': '0', 'columnspan': '4',
381     'ipadx': '0', 'ipady': '0', 'padx': '50', 'pady': '0',
382     'row': '3', 'rowspan': '1', 'sticky': 'ew',
383   }),
384   (_checkGridForget, (), (4, 3)),
385   (_checkGridSlaves, (), 7),
386 )
387     
388 testData = testData + ((c, ((tests, {}),)),)
389
390 if __name__ == '__main__':
391     #Test.setverbose(1)
392     #Test.setdelay(1000)
393     Test.runTests(testData)