如何修改matplotlib导航的图标

How to modify icon of matplotlib navigation

我已经能够使用以下代码 delete/disable 不同的 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)

现在我想更改其余图标的图标设计,例如适合通用 GUI 设计的主页、平移和缩放。

如何用我自己的 .ico 文件修改这些图标?

逻辑类似于删除 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()))