DynamicModule

DynamicModule[{x,y,},expr]

represents an object which maintains the same local instance of the symbols x, y, in the course of all evaluations of Dynamic objects in expr. Symbols specified in a DynamicModule will by default have their values maintained even across Wolfram System sessions.

DynamicModule[{x=x0,y=y0,},expr]

specifies initial values for x, y, .

Details and Options

  • DynamicModule first gives unique names to local variables in expr, just like Module, then evaluates the resulting expression, and then returns a version of this wrapped in DynamicModule.
  • In a notebook, this returned version will often be displayed in an output cell. An example is the output from Manipulate.
  • If interactive changing or editing of Dynamic objects within the displayed form of a DynamicModule results in changes in any values for local variables, then the DynamicModule object is modified to reflect these.
  • Values of local variables in a DynamicModule are by default automatically saved when a notebook containing the DynamicModule is saved, so that these values in effect persist across sessions of the Wolfram System.
  • If you make a copy of a piece of a notebook that contains a DynamicModule object, the local variables in the copy will be independent of the local variables in the original, though they will start with the same values.
  • The following options can be given:
  • BaseStyle{}base style specifications for the displayed object
    DeinitializationNonean expression to evaluate when the DynamicModule can no longer be displayed
    DynamicModuleValuesAutomaticdynamically updated data on variable values
    InheritScopeFalseconnect DynamicModule variables to another DynamicModule instance
    InitializationNonean expression to evaluate when the DynamicModule is first displayed
    SaveDefinitionsFalsewhether to save all definitions related to expr
    SynchronousInitializationTruewhether to perform initialization synchronously
    UndoTrackedVariablesNonevariables which, when changed, should be tracked by the front end's undo mechanism
    UnsavedVariablesNonevariables whose values should not be saved
  • When DynamicModule is first evaluated, initial assignments for local variables are made during the evaluation. Any setting for the Initialization option is evaluated only when the output of DynamicModule is displayed.
  • When a DynamicModule object is displayed for the first time in a particular notebook, saved values for local variables are restored, and then any setting for the Initialization option is evaluated.
  • All values of local variables are saved, except for those included in the UnsavedVariables list. Ordinary values of symbols are saved in the first argument of the DynamicModule; other values are saved in the setting for the DynamicModuleValues option.
  • DynamicModule has attribute HoldAll.
  • DynamicModule constructs can be nested in any way, with inner variables being renamed if necessary.
  • DynamicModule is a scoping construct that implements lexical scoping.

Examples

open allclose all

Basic Examples  (1)

Create a Slider with a dynamically updating localized variable:

Copy and paste the output above to get a standalone object:

Scope  (6)

DynamicModule Variables  (3)

Use DynamicModule to localize variables and prevent conflicts with their global counterparts:

Local variables are unique to the generated output:

Assign initial values to local variables, just like Module:

Define a function as a local variable:

DynamicModule State  (3)

Use DynamicModule to save the displayed state across different Wolfram System sessions:

Module only gives unique states in the current Wolfram System session:

Use Initialization to evaluate expressions before displaying the contents:

Initialization is evaluated after the local variable assignments:

Generalizations & Extensions  (1)

Define an arbitrary number of local variables by assigning down values to a variable:

Options  (14)

BaseStyle  (1)

Set the base style:

Deinitialization  (1)

Specify expressions to be evaluated when output is no longer displayed:

DynamicModuleValues  (1)

Function definitions of local symbols are automatically inserted into DynamicModuleValues:

InheritScope  (1)

Create a dialog box with a DynamicModule that inherits variables from a parent DynamicModule:

Initialization  (4)

By default, external definitions are lost between kernel sessions:

Use Initialization to save evaluations necessary for the content:

Local variables can also be initialized:

The initialization only runs if the output is displayed:

The first DynamicModule was suppressed by the semicolon, so it never ran its assignment:

SaveDefinitions  (2)

By default, external definitions are lost between kernel sessions:

By setting SaveDefinitions to True, the external definitions are saved with the output:

SynchronousInitialization  (2)

By default, the initializations are evaluated before the output is displayed (synchronously):

Force the output to display while the initializations are evaluated asynchronously:

UndoTrackedVariables  (1)

Create an interface that responds to the Undo menu command:

UnsavedVariables  (1)

Specify symbols whose state should not be saved:

Evaluate the following and move the two sliders, then click Close:

Evaluate the following and note that the second slider does not remember its previous state:

Applications  (3)

Construct a dynamic calculating interface:

Interactive curve fit plot:

An angular slider with range :

Connect the slider to a dynamic variable:

Demonstrate a sinusoidal relationship:

Use PolarPlot to demonstrate a spiral curve:

Properties & Relations  (2)

DynamicModule and Module are fundamentally different although they seem similar:

In this case both sliders will move, and will not work without evaluation when reopened:

Manipulate relies on DynamicModule to create the output:

Neat Examples  (2)

Independent state sliders:

Click in the framed area to see bouncing balls:

Use dynamic objects as input; click in the different frames to create additional balls:

Introduced in 2007
 (6.0)
 |
Updated in 2008
 (7.0)
2014
 (10.0)