Wolfram mathematica Mathematica中定位器窗格图形上的右键单击菜单

Wolfram mathematica Mathematica中定位器窗格图形上的右键单击菜单,wolfram-mathematica,contextmenu,graphic,Wolfram Mathematica,Contextmenu,Graphic,当在Mathematica中右键单击图形时,会出现上下文菜单(剪切图形、复制图形、将图形另存为…),但对于定位器窗格图形,此右键单击菜单是禁用的。 如何使用Mathematica中的EventHandler或MouseAction命令调用LocatorPane图形的上下文菜单?什么命令创建此菜单 LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]] 我找到了在mathematica中打开“另存为”窗口的代码 FrontEndExecute[FrontE

当在Mathematica中右键单击图形时,会出现上下文菜单(剪切图形、复制图形、将图形另存为…),但对于定位器窗格图形,此右键单击菜单是禁用的。 如何使用Mathematica中的EventHandler或MouseAction命令调用LocatorPane图形的上下文菜单?什么命令创建此菜单

LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]]
我找到了在mathematica中打开“另存为”窗口的代码

FrontEndExecute[FrontEndToken["SelectionSaveSpecial"]]

右键单击定位器窗格时,我希望“另存为”窗口打开。

不是完整的答案,而是
单元格
的上下文菜单由
单元格
上下文菜单
选项控制。您可以使用样式为“图形”的
Cell
s为您想要的任何单元格设置默认上下文菜单:

CellPrint[
 Cell[BoxData[SuperscriptBox["x", "2"]], "Output", 
  ContextMenu -> 
   FEPrivate`FrontEndResource["ContextMenus", "Graphics"]]]
你说:

我想通过右键单击LocatorPane graphics调用“另存图形为”

我还没有找到这样做的方法,但您可能不知道您可以:

  • 通过在对象右侧的空白处单击并向左拖动,选择该对象

  • 使用菜单
    文件>将所选内容另存为…
    以所需格式保存图形


  • 我认为正确的选择似乎不起作用:

    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”


    欢迎来到stackoverflow Jalil!别忘了为下面你喜欢的答案投票,如果其中一个答案让你满意,请用答案旁边的复选标记接受。您可以随时更改您的选择。谢谢您的更新。这就更清楚了。您的目的是保存LocatorPane的图像还是其他什么?我想通过右键单击LocatorPane graphics来调用“将图形另存为”。@Mr.Wizard我编辑了这个问题。请看。@Alexey:当我使用以下代码时:LocatorPane[{1,1}/2,Graphics[{Gray,Disk[]}]],右击菜单是禁用的,只有左击是活动的。我想在这个例子中为图形设置右键单击菜单。@Jalil我不知道如何在
    LocatorPane
    上启用右键单击上下文菜单,但您需要它做什么?您可以选择并复制/粘贴
    LocatorPane
    ,方法是用鼠标像普通文本一样选择它。@Alexey通过运行
    LocatorPane[{1,1}/2,Graphics[{Gray,Disk[]}]
    创建图形。我无法通过像文本一样选择此图形来复制它。我想要一个和其他图形一样的右键菜单。@Jalil,你真的可以做到!请尝试
    {LocatorPane[{1,1}/2,图形[{Gray,Disk[]}]]}
    。您只需使用键盘快捷键Ctrl+C和Ctrl+V即可进行复制粘贴@Jalil要选择整个
    单元格
    内容,您也可以在单元格的自由区域内双击。@Mr.Wizard感谢您的友好响应。@Mr.Wizard在我的机器上显示“另存为…”对话框,但它不保存任何内容。目标目录中没有创建任何文件。@Alexey是的,我现在测试了它,没有通过“另存为”菜单创建任何文件。@Alexey@Jalil您使用的是什么版本?它在Windows XP上的Mathematica 7.0.1中工作。请在删除行
    SelectionMove[EvaluationNotebook[],All,GeneratedCell]后重试,但我必须先在窗格内单击(移动选择器),然后右键单击才能使其工作。另外,您要保存到什么格式?我用了.GIF,也许不是所有的都能用。我将对此进行探讨。看来我可以保存为.gif、.jpg和.png,但不能保存为.bmp、.pdf或.emf。请尝试前三种,并告诉我它们是否有效。至少这是一个开始。
    
    Dynamic[EventHandler[
      LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]],
      {"MouseClicked", 2} :> 
       FrontEndExecute[
         SelectionMove[EvaluationNotebook[], All, GeneratedCell];
         SelectionMove[EvaluationNotebook[], All, CellContents]; 
         FrontEndToken["SelectionSaveSpecial"]
       ]
    ]]