@@ -235,7 +235,7 @@ def __eq__(self):
235235
236236
237237class Window (widget .PrimaryCanvas ):
238- animation_speed = 2
238+ animation_speed = 3
239239 _current = None
240240
241241 def init (self ):
@@ -249,25 +249,29 @@ def clear(self):
249249 self .delete (self ._current )
250250 self .update ()
251251
252+ def __set (self , view : tk .Widget , coord : Coord ):
253+ return self .create_window (
254+ coord , window = view , anchor = 'nw'
255+ )
256+
252257 def set_view (self , view : tk .Widget ):
253258 self .clear ()
254- self ._current = self .create_window ( self .origin , window = view )
259+ self ._current = self .__set ( view , self .origin )
255260
256261 def change_view (self , view : tk .Widget , direction : Direction ):
257262 if not isinstance (direction , Direction ):
258263 direction = Direction [direction .upper ()] # Cast string for convenience
259264
260265 if direction in (Direction .UP , Direction .DOWN ):
261- edge = self .winfo_screenheight ()
266+ dist = self .winfo_height ()
262267 elif direction in (Direction .LEFT , Direction .RIGHT ):
263- edge = self .winfo_screenwidth ()
268+ dist = self .winfo_width ()
264269 else :
265270 raise NotImplementedError
266-
267- pos = self .__coord (self ._current )
268- end = pos + edge
269- beg = pos - edge
270- wid = self .create_window (beg , window = view )
271+ edge = direction * dist
272+ end = self .origin + edge
273+ beg = self .origin - edge
274+ wid = self .__set (view , beg )
271275
272276 self .animater .clear ()
273277 self .animater .add_motion (self ._current , end , speed = self .animation_speed )
@@ -278,4 +282,4 @@ def change_view(self, view: tk.Widget, direction: Direction):
278282
279283 @property
280284 def origin (self ):
281- return Coord (0 , 0 )
285+ return Coord (self . winfo_x (), self . winfo_y () )
0 commit comments