11
11
12
12
13
13
class TestUtilities (BaseWidgetTest ):
14
+ def assertGeometryInfoEquals (self , info1 , info2 ):
15
+ info1 .pop ("in" , None )
16
+ info2 .pop ("in" , None )
17
+ self .assertEquals (info1 , info2 )
18
+
14
19
def setUp (self ):
15
20
BaseWidgetTest .setUp (self )
16
21
self ._dummy_flag = False
@@ -37,30 +42,36 @@ def test_move_widget(self):
37
42
38
43
def test_move_widget_pack (self ):
39
44
label = ttk .Label (self .window )
40
- label .pack ()
45
+ label .pack (side = tk .LEFT )
46
+ info = label .pack_info ()
41
47
tl = tk .Toplevel (self .window )
42
- label = move_widget (label , tl )
43
- label .pack ()
48
+ label = move_widget (label , tl , preserve_geometry = True )
44
49
self .assertIsChild (label , tl )
45
50
self .assertIn (label , tl .pack_slaves ())
51
+ self .assertNotIn (label , self .window .pack_slaves ())
52
+ self .assertGeometryInfoEquals (info , label .pack_info ())
46
53
47
54
def test_move_widget_grid (self ):
48
55
label = ttk .Label (self .window )
49
- label .grid ()
56
+ label .grid (row = 1 , column = 1 )
57
+ info = label .grid_info ()
50
58
tl = tk .Toplevel (self .window )
51
- label = move_widget (label , tl )
52
- label .grid ()
59
+ label = move_widget (label , tl , preserve_geometry = True )
53
60
self .assertIsChild (label , tl )
54
- self .assertIn (label , tl .grid_slaves ())
61
+ self .assertIn (label , tl .grid_slaves (row = 1 , column = 1 ))
62
+ self .assertNotIn (label , self .window .grid_slaves (row = 1 , column = 1 ))
63
+ self .assertGeometryInfoEquals (info , label .grid_info ())
55
64
56
65
def test_move_widget_place (self ):
57
66
label = ttk .Label (self .window )
58
- label .place ()
67
+ label .place (x = 0 , y = 10 )
68
+ info = label .place_info ()
59
69
tl = tk .Toplevel (self .window )
60
- label = move_widget (label , tl )
61
- label .place ()
70
+ label = move_widget (label , tl , preserve_geometry = True )
62
71
self .assertIsChild (label , tl )
63
72
self .assertIn (label , tl .place_slaves ())
73
+ self .assertNotIn (label , self .window .place_slaves ())
74
+ self .assertGeometryInfoEquals (info , label .place_info ())
64
75
65
76
def test_move_widget_with_binding (self ):
66
77
label = ttk .Label (self .window )
@@ -123,6 +134,60 @@ def test_move_widget_with_binding_on_parent(self):
123
134
self .window .event_generate ("<Enter>" )
124
135
self .assertHasBeenInvoked ()
125
136
137
+ def test_move_widget_with_children_pack (self ):
138
+ frame = ttk .Frame (self .window )
139
+ label = ttk .Label (frame )
140
+ parent = tk .Toplevel ()
141
+ label .pack (side = tk .BOTTOM )
142
+ info = label .pack_info ()
143
+ frame .pack (expand = True )
144
+
145
+ frame = move_widget (frame , parent )
146
+ self .assertTrue (len (frame .pack_slaves ()) == 1 )
147
+ label2 = frame .nametowidget (frame .pack_slaves ()[0 ])
148
+ self .assertTrue (label is not label2 )
149
+
150
+ self .assertGeometryInfoEquals (info , label2 .pack_info ())
151
+ self .assertRaises (tk .TclError , label .pack_info )
152
+ self .assertRaises (tk .TclError , frame .pack_info ) # Frame is not packed
153
+ self .assertIn (label2 , frame .pack_slaves ())
154
+
155
+ def test_move_widget_with_children_grid (self ):
156
+ frame = ttk .Frame (self .window )
157
+ label = ttk .Label (frame )
158
+ parent = tk .Toplevel ()
159
+ label .grid (row = 1 , column = 1 )
160
+ info = label .grid_info ()
161
+ frame .grid (row = 1 , column = 1 )
162
+
163
+ frame = move_widget (frame , parent )
164
+ self .assertTrue (len (frame .grid_slaves ()) == 1 )
165
+ label2 = frame .nametowidget (frame .grid_slaves ()[0 ])
166
+ self .assertTrue (label is not label2 )
167
+
168
+ self .assertGeometryInfoEquals (info , label2 .grid_info ())
169
+ self .assertRaises (tk .TclError , label .grid_info )
170
+ self .assertTrue (len (frame .grid_info ()) == 0 ) # Frame is not in grid
171
+ self .assertIn (label2 , frame .grid_slaves ())
172
+
173
+ def test_move_widget_with_children_place (self ):
174
+ frame = ttk .Frame (self .window )
175
+ label = ttk .Label (frame )
176
+ parent = tk .Toplevel ()
177
+ label .place (x = 53 , y = 13 )
178
+ info = label .place_info ()
179
+ frame .place (x = 100 , y = 10 )
180
+
181
+ frame = move_widget (frame , parent )
182
+ self .assertTrue (len (frame .place_slaves ()) == 1 )
183
+ label2 = frame .nametowidget (frame .place_slaves ()[0 ])
184
+ self .assertTrue (label is not label2 )
185
+
186
+ self .assertGeometryInfoEquals (info , label2 .place_info ())
187
+ self .assertRaises (tk .TclError , label .place_info )
188
+ self .assertTrue (len (frame .place_info ()) == 0 )
189
+ self .assertIn (label2 , frame .place_slaves ())
190
+
126
191
def test_parse_geometry (self ):
127
192
g = parse_geometry ('1x1+1+1' )
128
193
self .assertEqual (g , (1 , 1 , 1 , 1 ))
0 commit comments