Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3a30505

Browse files
authored
Merge pull request #18240 from QuLogic/auto-backport-of-pr-18235-on-v3.3.x
Backport PR #18235 on branch v3.3.x
2 parents 4e940b6 + 22ccf4a commit 3a30505

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

lib/matplotlib/backends/_backend_tk.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -642,14 +642,15 @@ def save_figure(self, *args):
642642
tkinter.messagebox.showerror("Error saving file", str(e))
643643

644644
def set_history_buttons(self):
645-
if self._nav_stack._pos > 0:
646-
self._buttons['Back']['state'] = tk.NORMAL
647-
else:
648-
self._buttons['Back']['state'] = tk.DISABLED
649-
if self._nav_stack._pos < len(self._nav_stack._elements) - 1:
650-
self._buttons['Forward']['state'] = tk.NORMAL
651-
else:
652-
self._buttons['Forward']['state'] = tk.DISABLED
645+
state_map = {True: tk.NORMAL, False: tk.DISABLED}
646+
can_back = self._nav_stack._pos > 0
647+
can_forward = self._nav_stack._pos < len(self._nav_stack._elements) - 1
648+
649+
if "Back" in self._buttons:
650+
self._buttons['Back']['state'] = state_map[can_back]
651+
652+
if "Forward" in self._buttons:
653+
self._buttons['Forward']['state'] = state_map[can_forward]
653654

654655

655656
class ToolTip:

lib/matplotlib/tests/test_backend_tk.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,16 @@ def evil_blit(photoimage, aggimage, offsets, bboxptr):
2626
np.ones((4, 4, 4)),
2727
(0, 1, 2, 3),
2828
bad_boxes)
29+
30+
31+
@pytest.mark.backend('TkAgg', skip_on_importerror=True)
32+
def test_missing_back_button():
33+
from matplotlib.backends.backend_tkagg import NavigationToolbar2Tk
34+
class Toolbar(NavigationToolbar2Tk):
35+
# only display the buttons we need
36+
toolitems = [t for t in NavigationToolbar2Tk.toolitems if
37+
t[0] in ('Home', 'Pan', 'Zoom')]
38+
39+
fig = plt.figure()
40+
# this should not raise
41+
Toolbar(fig.canvas, fig.canvas.manager.window)

0 commit comments

Comments
 (0)