File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -635,14 +635,15 @@ def save_figure(self, *args):
635635 tkinter .messagebox .showerror ("Error saving file" , str (e ))
636636
637637 def set_history_buttons (self ):
638- if self ._nav_stack ._pos > 0 :
639- self ._buttons ['Back' ]['state' ] = tk .NORMAL
640- else :
641- self ._buttons ['Back' ]['state' ] = tk .DISABLED
642- if self ._nav_stack ._pos < len (self ._nav_stack ._elements ) - 1 :
643- self ._buttons ['Forward' ]['state' ] = tk .NORMAL
644- else :
645- self ._buttons ['Forward' ]['state' ] = tk .DISABLED
638+ state_map = {True : tk .NORMAL , False : tk .DISABLED }
639+ can_back = self ._nav_stack ._pos > 0
640+ can_forward = self ._nav_stack ._pos < len (self ._nav_stack ._elements ) - 1
641+
642+ if "Back" in self ._buttons :
643+ self ._buttons ['Back' ]['state' ] = state_map [can_back ]
644+
645+ if "Forward" in self ._buttons :
646+ self ._buttons ['Forward' ]['state' ] = state_map [can_forward ]
646647
647648
648649class ToolTip :
Original file line number Diff line number Diff line change @@ -100,3 +100,16 @@ def target():
100100 except subprocess .CalledProcessError :
101101 pytest .fail ("Subprocess failed to test intended behavior" )
102102 assert proc .stdout .count ("success" ) == 1
103+
104+
105+ @pytest .mark .backend ('TkAgg' , skip_on_importerror = True )
106+ def test_missing_back_button ():
107+ from matplotlib .backends .backend_tkagg import NavigationToolbar2Tk
108+ class Toolbar (NavigationToolbar2Tk ):
109+ # only display the buttons we need
110+ toolitems = [t for t in NavigationToolbar2Tk .toolitems if
111+ t [0 ] in ('Home' , 'Pan' , 'Zoom' )]
112+
113+ fig = plt .figure ()
114+ # this should not raise
115+ Toolbar (fig .canvas , fig .canvas .manager .window )
You can’t perform that action at this time.
0 commit comments