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 Deinitialization None an expression to evaluate when the DynamicModule can no longer be displayed DynamicModuleValues Automatic dynamically updated data on variable values ExcludedContexts Automatic contexts excluded from SaveDefinitions InheritScope False connect DynamicModule variables to another DynamicModule instance IncludedContexts All contexts considered for SaveDefinitions Initialization None an expression to evaluate when the DynamicModule is first displayed SaveDefinitions False whether to save all definitions related to expr SynchronousInitialization True whether to perform initialization synchronously UndoTrackedVariables None variables which, when changed, should be tracked by the front end's undo mechanism UnsavedVariables None variables 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 allBasic Examples (1)
Create a Slider with a dynamically updating localized variable:
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:
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)
Options (16)
DynamicModuleValues (1)
Function definitions of local symbols are automatically inserted into DynamicModuleValues:
ExcludedContexts (1)
By default, certain system-internal contexts are not saved in the initialization option:
Use ExcludedContexts{} to save definitions of all non-protected symbols:
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:
IncludedContexts (1)
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)
Applications (3)
Construct a dynamic calculating interface:
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:
Possible Issues (1)
By default, definitions attached to "System`" symbols are not pulled in:
Use ExcludedContexts{} to pull in definitions from all contexts:
Text
Wolfram Research (2007), DynamicModule, Wolfram Language function, https://reference.wolfram.com/language/ref/DynamicModule.html (updated 2021).
CMS
Wolfram Language. 2007. "DynamicModule." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/DynamicModule.html.
APA
Wolfram Language. (2007). DynamicModule. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DynamicModule.html