@@ -279,6 +279,9 @@ def enter_notify_event(self, event):
279
279
guiEvent = event , xy = self ._event_mpl_coords (event ))
280
280
281
281
def button_press_event (self , event , dblclick = False ):
282
+ # set focus to the canvas so that it can receive keyboard events
283
+ self ._tkcanvas .focus_set ()
284
+
282
285
num = getattr (event , 'num' , None )
283
286
if sys .platform == 'darwin' : # 2 and 3 are reversed.
284
287
num = {2 : 3 , 3 : 2 }.get (num , num )
@@ -387,6 +390,12 @@ def stop_event_loop(self):
387
390
self ._event_loop_id = None
388
391
self ._tkcanvas .quit ()
389
392
393
+ def set_cursor (self , cursor ):
394
+ try :
395
+ self ._tkcanvas .configure (cursor = cursord [cursor ])
396
+ except tkinter .TclError :
397
+ pass
398
+
390
399
391
400
class FigureManagerTk (FigureManagerBase ):
392
401
"""
@@ -467,6 +476,7 @@ def destroy(*args):
467
476
Gcf .destroy (self )
468
477
self .window .protocol ("WM_DELETE_WINDOW" , destroy )
469
478
self .window .deiconify ()
479
+ self .canvas ._tkcanvas .focus_set ()
470
480
else :
471
481
self .canvas .draw_idle ()
472
482
if mpl .rcParams ['figure.raise_window' ]:
@@ -629,13 +639,6 @@ def remove_rubberband(self):
629
639
lastrect = _api .deprecated ("3.6" )(
630
640
property (lambda self : self .canvas ._rubberband_rect ))
631
641
632
- def set_cursor (self , cursor ):
633
- window = self .canvas .get_tk_widget ().master
634
- try :
635
- window .configure (cursor = cursord [cursor ])
636
- except tkinter .TclError :
637
- pass
638
-
639
642
def _set_image_for_button (self , button ):
640
643
"""
641
644
Set the image for a button based on its pixel size.
@@ -840,8 +843,14 @@ def _rescale(self):
840
843
def add_toolitem (
841
844
self , name , group , position , image_file , description , toggle ):
842
845
frame = self ._get_groupframe (group )
843
- button = NavigationToolbar2Tk ._Button (self , name , image_file , toggle ,
846
+ buttons = frame .pack_slaves ()
847
+ if position >= len (buttons ) or position < 0 :
848
+ before = None
849
+ else :
850
+ before = buttons [position ]
851
+ button = NavigationToolbar2Tk ._Button (frame , name , image_file , toggle ,
844
852
lambda : self ._button_click (name ))
853
+ button .pack_configure (before = before )
845
854
if description is not None :
846
855
ToolTip .createToolTip (button , description )
847
856
self ._toolitems .setdefault (name , [])
@@ -853,6 +862,7 @@ def _get_groupframe(self, group):
853
862
self ._add_separator ()
854
863
frame = tk .Frame (master = self , borderwidth = 0 )
855
864
frame .pack (side = tk .LEFT , fill = tk .Y )
865
+ frame ._label_font = self ._label_font
856
866
self ._groups [group ] = frame
857
867
return self ._groups [group ]
858
868
0 commit comments