当在Mathematica中右键单击图形时,您将获得一个上下文菜单(剪切图形,复制图形,将图形保存为......),但对于LocatorPane Graphic,此右键单击菜单将被禁用。 如何在Mathematica中使用EventHandler或MouseAction命令调用LocatorPane图形的上下文菜单?什么命令创建此菜单?
LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]]
我发现此代码在mathematica中打开“另存为”窗口。
FrontEndExecute[FrontEndToken["SelectionSaveSpecial"]]
我希望当我右键单击LocatorPane图形时,“另存为”窗口打开。
答案 0 :(得分:4)
不是完整的答案,但Cell
的上下文菜单由ContextMenu
的{{1}}选项控制。对于您希望的任何单元格,您可以为样式Cell
设置Cell
s的默认上下文菜单:
"Graphics"
答案 1 :(得分:2)
你说:
我想通过右键单击LocatorPane图形来调用“将图形另存为”。
我还没有办法做到这一点,但你可能不知道你可以:
通过单击右侧的空白区域并向左拖动来选择LocatorPane
对象。
使用菜单File > Save Selection As...
以所需格式保存图片。
我认为正确的选项似乎不起作用:
SetOptions[EvaluationNotebook[],
ComponentwiseContextMenu -> {"GraphicsBox" ->
FEPrivate`FrontEndResource["ContextMenus", "GraphicsBox"],
"Graphics3DBox" ->
FEPrivate`FrontEndResource["ContextMenus", "Graphics3DBox"],
"LocatorPaneBox" ->
FEPrivate`FrontEndResource["ContextMenus", "GraphicsBox"],
"CellGroup" ->
FEPrivate`FrontEndResource["ContextMenus", "CellGroup"],
"CellBracket" ->
FEPrivate`FrontEndResource["ContextMenus", "CellBracket"],
"CellRange" ->
FEPrivate`FrontEndResource["ContextMenus", "CellRange"],
"CellInsertionPoint" ->
FEPrivate`FrontEndResource["ContextMenus", "CellInsertionPoint"]}
];
具体来说,"LocatorPaneBox" ->
的值已更改为"GraphicsBox"
,但没有明显效果。
另一方面,更改"GraphicsBox" ->
的值会产生影响。
我怀疑因为LocatorPane
使用鼠标输入,它会捕获右键单击尝试,并且永远不会将其传递给上下文菜单机制。也许禁用鼠标作为LocatorPane
的输入设备会纠正这个问题,但这似乎不切实际。
以下是实施使用"SelectionSaveSpecial"
的建议的一种方法:
Dynamic[EventHandler[
LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]],
{"MouseClicked", 2} :>
FrontEndExecute[
SelectionMove[EvaluationNotebook[], All, GeneratedCell];
SelectionMove[EvaluationNotebook[], All, CellContents];
FrontEndToken["SelectionSaveSpecial"]
]
]]