---
title: "OpenerView"
language: "en"
type: "Symbol"
summary: "OpenerView[{expr1, expr2}] represents an object which displays as an opener, together with expr1 if the opener is closed, and both expr1 and expr2 if it is open. OpenerView[{expr1, expr2}, state] specifies the state of the opener, with False being closed, and True being open."
keywords: 
- open viewer
canonical_url: "https://reference.wolfram.com/language/ref/OpenerView.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Viewers and Annotation"
    link: "https://reference.wolfram.com/language/guide/ViewersAndAnnotation.en.md"
  - 
    title: "Notebook Document Generation"
    link: "https://reference.wolfram.com/language/guide/DocumentGeneration.en.md"
  - 
    title: "User Interface Structuring & Layout"
    link: "https://reference.wolfram.com/language/guide/UserInterfaceStructuringAndLayout.en.md"
  - 
    title: "Standalone Interfaces"
    link: "https://reference.wolfram.com/language/guide/StandAloneInterfaces.en.md"
  - 
    title: "Creating Inspectors"
    link: "https://reference.wolfram.com/language/guide/CreatingInspectors.en.md"
  - 
    title: "Dynamic Visualization"
    link: "https://reference.wolfram.com/language/guide/DynamicVisualization.en.md"
  - 
    title: "Layout & Tables"
    link: "https://reference.wolfram.com/language/guide/LayoutAndTables.en.md"
  - 
    title: "Palettes"
    link: "https://reference.wolfram.com/language/guide/Palettes.en.md"
related_functions: 
  - 
    title: "SlideView"
    link: "https://reference.wolfram.com/language/ref/SlideView.en.md"
  - 
    title: "TabView"
    link: "https://reference.wolfram.com/language/ref/TabView.en.md"
  - 
    title: "FlipView"
    link: "https://reference.wolfram.com/language/ref/FlipView.en.md"
  - 
    title: "PaneSelector"
    link: "https://reference.wolfram.com/language/ref/PaneSelector.en.md"
  - 
    title: "Opener"
    link: "https://reference.wolfram.com/language/ref/Opener.en.md"
related_tutorials: 
  - 
    title: "Views"
    link: "https://reference.wolfram.com/language/tutorial/Views.en.md"
---
# OpenerView

OpenerView[{expr1, expr2}] represents an object which displays as an opener, together with expr1 if the opener is closed, and both expr1 and expr2 if it is open.

OpenerView[{expr1, expr2}, state] specifies the state of the opener, with False being closed, and True being open.

## Details and Options

* The opener displays as Opener[False] when closed, and Opener[True] when opened.

* The opener is displayed at the top left, outside the ``expri``.

* ``OpenerView[list, Dynamic[state]]`` takes the opener state to be specified by the dynamically updated current value of ``state``, with the value of ``state`` being reset if the opener is clicked.

* The following options can be given:

|                   |           |                                               |
| :---------------- | :-------- | :-------------------------------------------- |
| Alignment         | Automatic | how to align objects in the display area      |
| Background        | None      | background color to use                       |
| BaselinePosition  | Automatic | alignment relative to surrounding text        |
| BaseStyle         | {}        | base style specifications for the opener view |
| Enabled           | Automatic | whether controls are enabled                  |
| FrameMargins      | Automatic | margins inside the overall frame              |
| ImageMargins      | 0         | margins around the display area               |
| ImageSize         | Automatic | the overall image size for the display area   |

* With the default option setting ``ImageSize -> Automatic``, ``OpenerView`` leaves space only for the ``expri`` currently being displayed. ``ImageSize -> All`` leaves space for the largest of the ``expri``, so that its overall size does not change.

* With the default setting ``BaselinePosition -> Automatic``, the baseline of the ``OpenerView`` is taken to be the baseline of the opener icon.

* ``Method -> "Active"`` will cause the active area for the opener to include ``expr1``.

* The settings for ``BaseStyle`` are appended to the default style typically given by the ``"OpenerView"`` style in the current stylesheet.

---

## Examples (22)

### Basic Examples (2)

```wl
In[1]:= OpenerView[{Plus, x + y + z}]

Out[1]= DynamicModule[«3»]
```

---

Start in the open setting:

```wl
In[1]:= OpenerView[{Plus, x + y + z}, True]

Out[1]= DynamicModule[«3»]
```

### Scope (6)

#### OpenerView Content (4)

Use graphics as content in ``OpenerView`` :

```wl
In[1]:= OpenerView[{TraditionalForm[Sin[x]], Plot[Sin[x], {x, 0, 10}]}]

Out[1]= DynamicModule[«3»]
```

---

``OpenerView`` can contain any expression, including ``Manipulate`` :

```wl
In[1]:= OpenerView[{Text@Manipulate, Manipulate[Row[{(x + j) ^ 2, " == ", Expand[(x + j) ^ 2]}], {j, 1, 5, 1}]}]

Out[1]= DynamicModule[«3»]
```

---

``OpenerView`` can be nested:

```wl
In[1]:= OpenerView[{OpenerView[{a, b}], OpenerView[{x, y}]}]

Out[1]= DynamicModule[«3»]
```

---

By default, an ``OpenerView`` resizes according to its state:

```wl
In[1]:= d = {Circle, Graphics[Circle[], ImageSize -> 50]}

Out[1]= {Circle, [image]}

In[2]:= Framed /@ {OpenerView[d], OpenerView[d, True]}

Out[2]= {DynamicModule[«3»], DynamicModule[«3»]}
```

With ``ImageSize -> All``, ``OpenerView`` leaves enough space to display without ever resizing:

```wl
In[3]:= Framed /@ {OpenerView[d, ImageSize -> All], OpenerView[d, True, ImageSize -> All]}

Out[3]= {DynamicModule[«3»], DynamicModule[«3»]}
```

#### OpenerView Control (2)

Start by displaying the open expression:

```wl
In[1]:= OpenerView[{a, b}, True]

Out[1]= DynamicModule[«3»]
```

---

Connect an ``OpenerView`` to a checkbox:

```wl
In[1]:= {OpenerView[{Plus, x + y + z}, Dynamic[s]], Checkbox[Dynamic[s]]}

Out[1]= {OpenerView[{Plus, x + y + z}, Dynamic[s]], [-]}
```

### Options (11)

#### Alignment (1)

Different alignments within the view:

```wl
In[1]:= d = {"Circle Circle Circle", Graphics[Circle[], ImageSize -> 50]}

Out[1]= {"Circle Circle Circle", [image]}

In[2]:= Table[OpenerView[d, True, Alignment -> a], {a, {Left, Center, Right}}]

Out[2]= {DynamicModule[«3»], DynamicModule[«3»], DynamicModule[«3»]}
```

Specify ``Alignment`` within the ``ImageSize`` :

```wl
In[3]:=
Grid[Table[OpenerView[{1, 123}, ImageSize -> {75, 50}, Alignment -> {w, h}], 
	{h, {Bottom, Center, Top}}, {w, {Left, Center, Right}}], Frame -> All]

Out[3]=
|                    |                    |                    |
| ------------------ | ------------------ | ------------------ |
| DynamicModule[«3»] | DynamicModule[«3»] | DynamicModule[«3»] |
| DynamicModule[«3»] | DynamicModule[«3»] | DynamicModule[«3»] |
| DynamicModule[«3»] | DynamicModule[«3»] | DynamicModule[«3»] |
```

#### AutoAction (2)

By default, the opener will not change until you click the opener area:

```wl
In[1]:= {OpenerView[{Plus, y + z}, Dynamic[x]], Dynamic[x]}

Out[1]= {OpenerView[{Plus, y + z}, Dynamic[x]], Dynamic[x]}
```

---

By setting ``AutoAction``, the opener changes as the mouse moves over the opener area:

```wl
In[1]:= {OpenerView[{Plus, y + z}, Dynamic[x], AutoAction -> True], Dynamic[x]}

Out[1]= {OpenerView[{Plus, y + z}, Dynamic[x], AutoAction -> True], Dynamic[x]}
```

#### Background (2)

Change the background color:

```wl
In[1]:= Table[OpenerView[{Plus, x + y + z}, Background -> c], {c, {Pink, Gray, Yellow, Purple}}]

Out[1]= {DynamicModule[«3»], DynamicModule[«3»], DynamicModule[«3»], DynamicModule[«3»]}
```

---

Change the background color dynamically:

```wl
In[1]:= DynamicModule[{c}, OpenerView[{Plus, x + y + z}, Dynamic[c], Background -> Dynamic[If[c, Pink, Gray]]]]

Out[1]= DynamicModule[«3»]
```

#### BaselinePosition (1)

Align with surrounding text:

```wl
In[1]:= Row[Table[OpenerView[{Plus, x + y + z}, BaselinePosition -> c], {c, {Top, Center, Bottom}}], "xxx"]

Out[1]=
Row[{OpenerView[{Plus, x + y + z}, BaselinePosition -> Top], 
  OpenerView[{Plus, x + y + z}, BaselinePosition -> Center], 
  OpenerView[{Plus, x + y + z}, BaselinePosition -> Bottom]}, "xxx"]
```

#### Enabled (1)

By default, ``OpenerView`` is enabled:

```wl
In[1]:= OpenerView[{Plus, x + y + z}]

Out[1]= DynamicModule[«3»]
```

By setting ``Enabled -> False``, ``OpenerView`` is disabled, but visible in its current state:

```wl
In[2]:= OpenerView[{Plus, x + y + z}, Enabled -> False]

Out[2]= DynamicModule[«3»]
```

#### FrameMargins (1)

Add margins within the view:

```wl
In[1]:= Table[OpenerView[{Plus, x + y + z}, True, FrameMargins -> m], {m, {0, 10, 20}}]

Out[1]= {DynamicModule[«3»], DynamicModule[«3»], DynamicModule[«3»]}
```

#### ImageMargins (1)

Add margins outside the view:

```wl
In[1]:= Table[Framed[OpenerView[{Plus, x + y + z}, True, ImageMargins -> m]], {m, {0, 15, 40}}]

Out[1]= {DynamicModule[«3»], DynamicModule[«3»], DynamicModule[«3»]}
```

#### ImageSize (1)

Control the overall size of ``OpenerView`` :

```wl
In[1]:= Grid[Table[Framed[OpenerView[{Plus, x + y + z}, ImageSize -> {w, h}]], {h, {50, 70, 100}}, {w, {60, 80, 100}}]]

Out[1]=
|                    |                    |                    |
| ------------------ | ------------------ | ------------------ |
| DynamicModule[«3»] | DynamicModule[«3»] | DynamicModule[«3»] |
| DynamicModule[«3»] | DynamicModule[«3»] | DynamicModule[«3»] |
| DynamicModule[«3»] | DynamicModule[«3»] | DynamicModule[«3»] |
```

#### Method (1)

Normally, toggling the opener requires clicking the opener directly:

```wl
In[1]:= OpenerView[{"long label", "contents"}]

Out[1]= DynamicModule[«3»]
```

With ``Method -> "Active"``, the label can also be clicked to toggle the opener:

```wl
In[2]:= OpenerView[{"long label", "contents"}, Method -> "Active"]

Out[2]= DynamicModule[«3»]
```

### Applications (1)

Show the graphical representation of a clock:

```wl
In[1]:= clock[{h_, m_, s_}] := Graphics[{Table[Text[t, 0.9{Sin[t Pi / 6], Cos[t Pi / 6]}], {t, 1, 12}], Circle[], Green, Rotate[Line[{{0, 0}, {0, 0.9}}], (-2Pi)s / 60, {0, 0}], Blue, Rotate[Line[{{0, 0}, {0, 0.8}}], (-2Pi)(m + s / 60) / 60, {0, 0}], Rotate[Line[{{0, 0}, {0, 0.4}}], (-2Pi)Mod[h + m / 60, 12] / 12, {0, 0}]}]

In[2]:= OpenerView[{Dynamic[DateString[], UpdateInterval -> 1], Dynamic[clock@Take[DateList[], -3], UpdateInterval -> 1]}]

Out[2]= DynamicModule[«3»]
```

### Properties & Relations (2)

``OpenerView`` is a construction of ``Opener`` and ``PaneSelector`` :

```wl
In[1]:= OpenerView[{"Heading", "Actual content"}]

Out[1]= DynamicModule[«3»]

In[2]:= PaneSelector[{True -> Grid[{{Opener[Dynamic[x]], Item["Heading", Alignment -> Left]}, {"", "Actual content"}}], False -> Grid[{{Opener[Dynamic[x]], Item["Heading", Alignment -> Left]}}]}, Dynamic[x]]

Out[2]= 
```

---

Dynamic variables only update when visible:

```wl
In[1]:= OpenerView[{Dynamic[x], Dynamic[x = DateString[], UpdateInterval -> 1]}, False]

Out[1]= DynamicModule[«3»]

In[2]:= OpenerView[{Dynamic[y], Dynamic[y = DateString[], UpdateInterval -> 1]}, True]

Out[2]= DynamicModule[«3»]
```

## See Also

* [`SlideView`](https://reference.wolfram.com/language/ref/SlideView.en.md)
* [`TabView`](https://reference.wolfram.com/language/ref/TabView.en.md)
* [`FlipView`](https://reference.wolfram.com/language/ref/FlipView.en.md)
* [`PaneSelector`](https://reference.wolfram.com/language/ref/PaneSelector.en.md)
* [`Opener`](https://reference.wolfram.com/language/ref/Opener.en.md)

## Tech Notes

* [Views](https://reference.wolfram.com/language/tutorial/Views.en.md)

## Related Guides

* [Viewers and Annotation](https://reference.wolfram.com/language/guide/ViewersAndAnnotation.en.md)
* [Notebook Document Generation](https://reference.wolfram.com/language/guide/DocumentGeneration.en.md)
* [User Interface Structuring & Layout](https://reference.wolfram.com/language/guide/UserInterfaceStructuringAndLayout.en.md)
* [Standalone Interfaces](https://reference.wolfram.com/language/guide/StandAloneInterfaces.en.md)
* [Creating Inspectors](https://reference.wolfram.com/language/guide/CreatingInspectors.en.md)
* [Dynamic Visualization](https://reference.wolfram.com/language/guide/DynamicVisualization.en.md)
* [Layout & Tables](https://reference.wolfram.com/language/guide/LayoutAndTables.en.md)
* [`Palettes`](https://reference.wolfram.com/language/guide/Palettes.en.md)

## History

* [Introduced in 2007 (6.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn60.en.md) \| [Updated in 2008 (7.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn70.en.md) ▪ [2016 (11.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn110.en.md)