| 180 | |
| 181 | |
| 182 | def _setup_qt(tb): |
| 183 | from matplotlib.backends.qt_compat import QtGui, QtWidgets |
| 184 | |
| 185 | menu = QtWidgets.QMenu() |
| 186 | try: |
| 187 | QActionGroup = QtGui.QActionGroup # Qt6 |
| 188 | except AttributeError: |
| 189 | QActionGroup = QtWidgets.QActionGroup # Qt5 |
| 190 | group = QActionGroup(menu) |
| 191 | group.triggered.connect(lambda action: _set_menu_entry(tb, action.text())) |
| 192 | |
| 193 | for name in _MENU_ENTRIES: |
| 194 | action = menu.addAction(name) |
| 195 | action.setCheckable(True) |
| 196 | action.setActionGroup(group) |
| 197 | action.setChecked(name == "None") |
| 198 | |
| 199 | actions = tb.actions() |
| 200 | before = next( |
| 201 | (action for action in actions |
| 202 | if isinstance(tb.widgetForAction(action), QtWidgets.QLabel)), None) |
| 203 | |
| 204 | tb.insertSeparator(before) |
| 205 | button = QtWidgets.QToolButton() |
| 206 | # FIXME: _icon needs public API. |
| 207 | button.setIcon(tb._icon(str(Path(__file__).parent / "images/eye.png"))) |
| 208 | button.setText(_BUTTON_NAME) |
| 209 | button.setToolTip(_BUTTON_HELP) |
| 210 | button.setPopupMode(QtWidgets.QToolButton.ToolButtonPopupMode.InstantPopup) |
| 211 | button.setMenu(menu) |
| 212 | tb.insertWidget(before, button) |
| 213 | |
| 214 | |
| 215 | def _setup_tk(tb): |