Как не показывать полосы прокрутки, когда ContentSize не соответствует контенту в Manipulate? - PullRequest
2 голосов
/ 19 декабря 2011

Это пример того, что я хотел бы сделать: сделать все отображение в области управления самой манипуляцией:

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 ]

2 голосов
/ 19 декабря 2011
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}
2 голосов
/ 19 декабря 2011

AppearanceElements -> "BookmarksButton" - это то, что вы ищете. Другие AppearanceElements для Manipulate в документации (ref/Manipulate): {"HideControlsButton", "SnapshotButton", "ResetButton", "UpdateButton", All}

Добавление Paneled->False в качестве опции к Manipulate избавляет от белой рамки. Обернув Manipulate с Panel, вы получите нечто, похожее на то, что вам нужно:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...