diff --git a/lib/matplotlib/backends/_backend_tk.py b/lib/matplotlib/backends/_backend_tk.py index d2bcbace5230..a9e1a22347fc 100644 --- a/lib/matplotlib/backends/_backend_tk.py +++ b/lib/matplotlib/backends/_backend_tk.py @@ -14,7 +14,7 @@ from matplotlib import backend_tools, cbook from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2, - StatusbarBase, TimerBase, ToolContainerBase, cursors) + StatusbarBase, TimerBase, ToolContainerBase, cursors, _Mode) from matplotlib._pylab_helpers import Gcf from matplotlib.figure import Figure from matplotlib.widgets import SubplotTool @@ -538,6 +538,23 @@ def destroy(self, *args): del self.message tk.Frame.destroy(self, *args) + def _update_buttons_checked(self): + # sync button checkstates to match active mode + for text, mode in [('Zoom', _Mode.ZOOM), ('Pan', _Mode.PAN)]: + if text in self._buttons: + if self.mode == mode: + self._buttons[text].select() # NOT .invoke() + else: + self._buttons[text].deselect() + + def pan(self, *args): + super().pan(*args) + self._update_buttons_checked() + + def zoom(self, *args): + super().zoom(*args) + self._update_buttons_checked() + def set_message(self, s): self.message.set(s)