Как изменить значок навигации matplotlib

#python #matplotlib #pyqt

#python #matplotlib #pyqt

Вопрос:

Я смог удалить / отключить различные кнопки панели инструментов навигации matplotlib с помощью следующего кода:

 canvasplt_matplotlib_toolbar = NavigationToolbar(
    self.canvasplt, self
)

matplotlib_toolbar_with_removed_icons = self.canvasplt.toolbar
unwanted_buttons = ["Back", "Forward", "Customize", "Subplots", "Save"]
for x in matplotlib_toolbar_with_removed_icons.actions():
    if x.text() in unwanted_buttons:
        matplotlib_toolbar_with_removed_icons.removeAction(x)
  

Теперь я хотел бы изменить дизайн значков оставшихся значков, таких как home, pan и zoom, чтобы он соответствовал общему дизайну графического интерфейса.

Как я могу изменить эти значки с помощью моих собственных файлов .ico?

введите описание изображения здесь

Ответ №1:

Логика аналогична удалению QAction, поскольку вы должны выполнить итерацию для получения соответствующего QAction и заменить значок с помощью метода setIcon:

 unwanted_buttons = ["Back", "Forward", "Customize", "Subplots", "Save"]

icons_buttons = {
    "Home": QtGui.QIcon("/path/of/home.png"),
    "Pan": QtGui.QIcon("/path/of/pan.png"),
    "Zoom": QtGui.QIcon("/path/of/zoom.png"),
}
for action in matplotlib_toolbar_with_removed_icons.actions():
    if action.text() in unwanted_buttons:
        matplotlib_toolbar_with_removed_icons.removeAction(action)
    if action.text() in icons_buttons:
        action.setIcon(icons_buttons.get(action.text(), QtGui.QIcon()))