当ContentSize不适合Manipulate中的内容时,如何不显示滚动条?

时间:2011-12-19 01:21:05

标签: wolfram-mathematica

这是我想要做的一个例子:在Manipulate自身的控制区域中进行所有显示:

Manipulate[

 p = Framed@
   Plot[Sin[x],{x, -y, y},ImageSize->300,Background-> White, ImagePadding -> 20];
   {},

 Grid[{
   {Control[{{y, N@Pi/2, "y"}, -Pi, Pi, Appearance -> "Labeled"}]},
   {Dynamic@p}
   }],

 ControlPlacement -> Left,
 Alignment -> Center,
 ImageMargins -> 1,
 FrameMargins -> 1,
 ContentSize -> {0}
 ]

问题在于M会自动添加滚动条:

enter image description here

帮助说

If ContentSize specifies a content area that does not completely fit 
the contents, then unless specified otherwise with AppearanceElements, 
functions like Manipulate display a resize area, as well as scrollbars 
when necessary.

问题是,如何使用AppearanceElements删除此滚动条?

(我希望有时M帮助在解释某些内容时不会那么短暂而且简短。)

在上面,请注意:unless specified otherwise with AppearanceElements, 但我无法弄清楚这意味着什么。 “否则”是什么 应该是什么意思?

我最接近的是将AppearanceElements -> ""添加到上面。所以新的 版本现在变为

Manipulate[
 p = Framed@
   Plot[Sin[x], {x, -y, y}, ImageSize -> 300, Background -> White, 
    ImagePadding -> 20];
 {},
 Grid[{
   {Control[{{y, N@Pi/2, "y"}, -Pi, Pi, Appearance -> "Labeled"}]},
   {Dynamic@p}
   }],

 ControlPlacement -> Left,
 Alignment -> Center,
 ImageMargins -> 1,
 FrameMargins -> 1,
 ContentSize -> {0},
 AppearanceElements -> "" (*added this *)
 ]

enter image description here

但请注意,尺寸不是很正确,它应该更紧, 我也失去了曾经存在的'+'。我必须保持这一点。

所以,我认为我需要的只是找到'+'的元素名称,所以我可以使用 正确的AppearanceElements -> "correctNameHere",我希望这一点 会做正确的事。 (我试过“关闭”,但没有这样做,我也失去了'+')

我找不到'+'元素名称是什么。有人知道吗?

以下是可以找到更多相关信息的地方:

http://reference.wolfram.com/mathematica/ref/Manipulator.html

http://reference.wolfram.com/mathematica/ref/ContentSize.html

所以,问题是:如何完全删除显示的滚动条效果 上面,但同时保持右上角的“+”。

感谢

更新2

感谢下面的答案,下面是结果的屏幕截图。

Manipulate[
 p = Framed@
   Plot[Sin[x], {x, -y, y}, ImageSize -> 300, Background -> White, 
    ImagePadding -> 20];
 {}, Grid[{{Control[{{y, N@Pi/2, "y"}, -Pi, Pi, 
      Appearance -> "Labeled"}]}, {Dynamic@p}}], 
 AppearanceElements -> "BookmarksButton", ControlPlacement -> Left, 
 Alignment -> Center, ImageMargins -> 1, FrameMargins -> 1, 
 ContentSize -> {0}, Alignment -> Center]

enter image description here

我很高兴。在顶角显示的小白线似乎 是一个副作用。我猜不得不活下去。

2 个答案:

答案 0 :(得分:2)

AppearanceElements -> "BookmarksButton"正是您要找的。文档(AppearanceElements)中Manipulate的其他ref/Manipulate{"HideControlsButton", "SnapshotButton", "ResetButton", "UpdateButton", All}

Paneled->False添加为Manipulate的选项可以摆脱白框。通过将ManipulatePanel一起打包,您可以获得所需内容:

Manipulate[ p = Framed@Plot[Sin[x], {x, -y, y}, ImageSize -> 300,  
Background -> White, ImagePadding -> 20]; {}, 
Grid[{{Control[{{y, N@Pi/2, "y"}, -Pi, Pi,  
  Appearance -> "Labeled"}]}, {Dynamic@p}}], 
AppearanceElements -> "BookmarksButton", ControlPlacement -> Left,  
Alignment -> Center, ImageMargins -> 1, FrameMargins -> 0,  
ContentSize -> {0}, Paneled->False ]//Panel

答案 1 :(得分:2)

Manipulate[
 p = Framed@
   Plot[Sin[x], {x, -y, y}, ImageSize -> 300, Background -> White, 
    ImagePadding -> 20];
 {}, Grid[{{Control[{{y, N@Pi/2, "y"}, -Pi, Pi, 
      Appearance -> "Labeled"}]}, {Dynamic@p}}]
 , AppearanceElements -> "ManipulateMenu", ControlPlacement -> Left, 
 Alignment -> Center, ImageMargins -> 1, FrameMargins -> 0, 
 ContentSize -> {0} ]

设置FrameMargins->0摆脱了白线(无论如何在Mac上),但仍然留下了Frame线。 Frame->False不会改变这一点。似乎Manipulate想要绘制一个内容区域,无论如何。 AppearanceElements选项似乎不完整/文档记录不清。以下是有效选项,但可能还有其他我不知道的选项:

{"ContentResizeArea", "HideControlsButton", "ManipulateMenu", "SnapshotButton", 
"ResetButton", "UpdateButton", "BookmarksButton", All, None}