Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3edda06

Browse filesBrowse files
committed
Make Qt navtoolbar more robust against removal of either pan or zoom.
... by using a QButtonGroup to ensure that a button gets unchecked when the other gets checked.
1 parent 9f1c730 commit 3edda06
Copy full SHA for 3edda06

File tree

Expand file treeCollapse file tree

1 file changed

+5
-7
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+5
-7
lines changed

‎lib/matplotlib/backends/backend_qt5.py

Copy file name to clipboardExpand all lines: lib/matplotlib/backends/backend_qt5.py
+5-7Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,8 @@ def _icon(self, name):
680680

681681
def _init_toolbar(self):
682682
self.basedir = str(cbook._get_data_path('images'))
683+
# Ensure that zoom and pan are mutually exclusive.
684+
self._button_group = QtWidgets.QButtonGroup()
683685

684686
for text, tooltip_text, image_file, callback in self.toolitems:
685687
if text is None:
@@ -690,6 +692,7 @@ def _init_toolbar(self):
690692
self._actions[callback] = a
691693
if callback in ['zoom', 'pan']:
692694
a.setCheckable(True)
695+
self._button_group.addButton(self.widgetForAction(a))
693696
if tooltip_text is not None:
694697
a.setToolTip(tooltip_text)
695698
if text == 'Subplots':
@@ -763,18 +766,13 @@ def edit_parameters(self):
763766
ax = axes[titles.index(item)]
764767
figureoptions.figure_edit(ax, self)
765768

766-
def _update_buttons_checked(self):
767-
# sync button checkstates to match active mode
768-
self._actions['pan'].setChecked(self._active == 'PAN')
769-
self._actions['zoom'].setChecked(self._active == 'ZOOM')
770-
771769
def pan(self, *args):
772770
super().pan(*args)
773-
self._update_buttons_checked()
771+
self._actions['pan'].setChecked(self._active == 'PAN')
774772

775773
def zoom(self, *args):
776774
super().zoom(*args)
777-
self._update_buttons_checked()
775+
self._actions['zoom'].setChecked(self._active == 'ZOOM')
778776

779777
def set_message(self, s):
780778
self.message.emit(s)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.