添加工具栏按钮图标 matplotlib

fgo*_*dra 4 python matplotlib

我想向 matplotlib 图形工具栏中的自定义按钮添加一个图标。我怎样才能做到这一点?到目前为止,我有以下代码:

import matplotlib
matplotlib.rcParams["toolbar"] = "toolmanager"
import matplotlib.pyplot as plt
from matplotlib.backend_tools import ToolToggleBase

class NewTool(ToolToggleBase):
    ...[tool code]

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1, 2, 3], label="legend")
ax.legend()
fig.canvas.manager.toolmanager.add_tool("newtool", NewTool)
fig.canvas.manager.toolbar.add_tool(toolmanager.get_tool("newtool"), "toolgroup")
fig.show()
Run Code Online (Sandbox Code Playgroud)

目前,它唯一做的就是添加一个新按钮(它可以完成我想要的操作),但图标只是工具的名称,即:“newtool”。如何更改 PNG 图像等自定义图标?

Imp*_*est 8

该工具可以有一个属性image,它表示 png 图像的路径。

import matplotlib
matplotlib.rcParams["toolbar"] = "toolmanager"
import matplotlib.pyplot as plt
from matplotlib.backend_tools import ToolBase

class NewTool(ToolBase):
    image = r"C:\path\to\hiker.png"

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1, 2, 3], label="legend")
ax.legend()
tm = fig.canvas.manager.toolmanager
tm.add_tool("newtool", NewTool)
fig.canvas.manager.toolbar.add_tool(tm.get_tool("newtool"), "toolgroup")
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我尝试了这个解决方案,matplotlib 文档上也有类似的解决方案,但我无法重现它。我收到以下错误: tm.add_tool("newtool", NewTool) AttributeError: 'NoneType' object has no attribute 'add_tool' plt.figure() 不包含画布似乎很奇怪。有任何想法吗? (2认同)
  • 我在 Jupyter 中得到相同的 _AttributeError_ 但它在标准 IDE 中运行良好(即使我在两者中使用相同的解释器)。看起来这与后端的选择有关。 (2认同)