Manipulate
Manipulate[expr,{u,umin,umax}]
产生一个带有控件的 expr 的版本,该控件允许对 u 值进行交互式操作.
Manipulate[expr,{u,umin,umax,du}]
允许 u 值在 umin 和 umax 之间以步长 du 变化.
Manipulate[expr,{{u,uinit},umin,umax,…}]
u 的初始值设置为 uinit.
Manipulate[expr,{{u,uinit,ulbl},…}]
以 ulbl 作为 u 的控件标签.
Manipulate[expr,{u,{u1,u2,…}}]
允许 u 取离散值 u1,u2,….
Manipulate[expr,{u,…},{v,…},…]
使控件可以操纵每个 u,v,….
Manipulate[expr,"cu"{u,…},"cv"{v,…},…]
把控件与外部设备上的一个指定的控制器相链接.
更多信息和选项
- 表达式 expr 可以是任何的图形或其它的表达式. 如果设置为 None,仅显示控件.
- 默认情况下,以下形式可以生成特定格式的控件:
-
{u,umin,umax} 操控器(滑尺、动画等等) {u,umin,umax,du} 步长为 du 的离散操控器 {u,{xmin,ymin},{xmax,ymax}} 二维滑尺 {u,Locator} 图形中的定位器 {u,{u1,u2,…}} 一些元素的设置用工具条;更多的元素设置使用弹出菜单 {u,{u1->lbl1,u2->lbl2,…}} 带有元素标签的设置用工具条或弹出菜单 {u,{True, False}} 选择框 {u,color} 颜色滑尺 {u} 空白输入栏 {u,FormObject[…]} 带有指定字段的表单 {u,func} 从一个函数中创建一个任意控件 {{u,uinit},…} 初值为 uinit 的控件 {{u,uinit,ulbl},…} 标签为 ulbl 的控件 {{u,…},…,opts} 带特殊选项的控件 Control[…] 一般控件对象 Delimiter 水平定界符 字符串、视窗、单元表达式等 显式的文本、视窗、单元等注释符号 - 取代控件的可能注释包括带有头部 String、Style、Row、Item、Text、ExpressionCell、TextCell 的表达式以及如 TabView、Grid 和 Multicolumn 那样的视窗和布局构造.
- 在注释中,控件可用 Control 具体指定.
- 一个控件的标签 ulbl 可以是任意表达式.
- 选项设置 ControlType->type 尽可能使用指定类型的控件.
- 可能的控件类型包括: Animator、Checkbox、CheckboxBar、ColorSetter、ColorSlider、FormControl、InputField、IntervalSlider、Manipulator、PopupMenu、RadioButton 或 RadioButtonBar、Setter 或 SetterBar、Slider、Slider2D、TogglerBar、Trigger 和 VerticalSlider. None 也可以使用.
- 可以为每个变量分别设置 ControlType 选项. 在变量的规范内也可以给出控件选项.
- ControlType->Trigger 指定一个特定的变量,它应该由触发器控制.
- 控件指定 {u,umin,umax,…,Appearance->"Labeled"} 产生值显示为标签的滑尺.
- 在 {u,func} 格式中,Dynamic[u] 作为 func 的第一个参数给出.
- 也可以使用格式 {u,umin,umax,func};它是按照 func[Dynamic[u],{umin,umax}] 执行计算的.
- 格式 {u} 等价于 {u, InputField},{u, ColorSlider} 将一个默认颜色的滑尺作为控件给出.
- 在 {u,Locator} 格式中,u 的值是 x 和 y 坐标组成的列表. 该坐标表示 expr 中的第一个图形,或者通过 expr 的每一个方向上的从 0 到 1 的范围.
- 格式 {{u,{{x1,y1},{x2,y2},…}},Locator} 为每一个 {xi,yi} 建立一个定位器,并且使 u 的值为所有 {xi,yi} 组成的列表.
- 格式 {{u,uinit},{xmin,ymin},{xmax,ymax},Locator} 指定定位器的范围.
- 选项设置 LocatorAutoCreate->All 指定新的定位器应该对没有碰到现有定位器的点击添加. Click 删除定位器.
- {{u,{}},Locator,LocatorAutoCreate->All} 启动时没有定位器,但允许创建定位器.
- 如果变量 u 的使用次数大于 1,给出它的链接控件.
- 选项设置 ControlPlacement->pos 指定控件应该放在与 expr 相关的 pos 坐标处. pos 可能的设置有 Bottom、Left、Right 和 Top.
- 注释的位置可通过将其封装在一个带有 ControlPlacement 选项的 Item 中指定.
- 可以给出下列的全部选项:
- 选项 ControlPlacement 和 ControlType 可以以 {u,spec,opts} 的形式分别提供给每个变量.
- Manipulate 是一个作用域结构,实现词典式作用域.
- Manipulate 产生一个 DynamicModule 对象,并且 u、v 等变量被指定为局部变量.
- 默认设置 UnsavedVariables->{},变量 u、v 等值会自动保存在记事本中,当记事本重新打开时它重新存储.
- 设置 Initialization:>expr,当 Manipulate 执行或结果第一次显示在一个特定会话中时,计算 expr 表达式.
- AppearanceElements 的设置可以是以下任何次序的列表: "ContentResizeArea"、"HideControlsButton"、"ManipulateMenu"、"SnapshotButton". 默认情况下,只包含 "ManipulateMenu" .
- 按下快照按钮,直接在 Manipulate 的输出下产生一个单元,包含格式 With[{u=uval,…},expr] 的输入, 指明所有变量的当前值.
- 设置 ContinuousAction->None,显示一个明确的 更新 按钮,expr 是不会重新计算的,直到按下该按钮.
- 默认设置 TrackedSymbols->Automatic,只有在 expr 中明确显示的符号才会被跟踪.
- TrackedSymbols->True 记录在 Manipulate 控件中出现的符号.
- 设置 TrackedSymbols->All,当任何符号在计算时发生改变的时候,才更新输出.
- 默认设置 ControllerLinking->Automatic,当 Manipulate 是当前选择的一部分时,Manipulate 中的控件响应外部设备中的指定控件.
- 外部设备的控件(例如游戏面板)可以包括游戏操纵杆、按钮等等.
- 典型的外部控件说明包括:
-
"X" 或 "X1" x 主要 x 值 "Y" 或 "Y1" y 主要 y 值 "Z" 或 "Z1" z 主要 z 值 "XY" 或 "XY1" {x,y} 主要 2 轴控件值 "XYZ" 或 "XYZ1" {x,y,z} 主要 3 轴控件值 "X2"、"Y2"、"XY2" 等. x、y、{x,y} 等 二级控件的值 "XCyclic" 等. x 等 循环值 "XAbsolute" 等. x 等 绝对控件位置的值 "B1"、"B2" 等. b1、b2 等 切换按钮状态 "B1Absolute"、 "B2Absolute" 等. b1、b2 等 瞬时按钮状态 - 在一个 Wolfram 系统特定进程中活跃的设备的外部控件的规范名称,通常可以用 ControllerInformation 来获取.
- 默认设置 ControllerMethod->Automatic,一个控件规范(如 "X")的意思是:一个控件的位移,例如游戏操纵杆默认是由相应的变量 x 的变化率决定的. 如果选中了一个不同的状态,例如通过松开游戏操纵杆,控件的绝对位置直接决定 x 的值.
- 在诸如 "XAbsolute" 的控件规范下,一个控件的绝对位置例如一个游戏操纵杆决定了相应的变量 x 的值.
- 在诸如 "XCyclic" 的控件规范下,当控件到达范围的最后,相应的变量 x 的值通常从头开始循环.
- 诸如 "XYZ" 的控件规范可能与外部设备上的很多控件相关联,例如单个控件上的两个截然不同的游戏操纵杆上的轴.
- 在有两个操纵杆的游戏面板或其它设备上,"XY1" 通常是指左边的操纵杆,"XY2" 通常是指右边的操纵杆. 如果游戏面板上有一个“帽子”控制,通常指的是 "XY3".
- 按钮控件规范,例如 "B1",每当对应的按钮被压下时,它就在 True 和 False 之间切换.
- 绝对规范,例如 "B1Absolute",当按下按钮时为 True 否则为 False.
- BaseStyle 和 LabelStyle 的设置可以作为当前样式表中 "Manipulate" 和 "ManipulateLabel" 提供的默认样式的补充.
范例
打开所有单元关闭所有单元范围 (29)
控件 (12)
演示 (8)
用 Delimiter、Item 等将 Manipulate 控件分组:
使用 ControlPlacement 放置单个控件:
同时使用 ControlPlacement 和注解元素:
标注可包含 Control 对象或者其它布局结构体:
控件设备 (3)
在默认情况下,当控件被选中时,它只影响一个 Manipulate;使用 All 可以对这个设置进行覆盖:
用 ControllerPath 指定使用的控件类别:
把 ControllerMethod 设置为 "Absolute",强制它为绝对关联而不是相对的:
选项 (68)
Apperance element (2)
AutoAction (2)
AutorunSequencing (4)
用 AutorunSequencing 来控制自动运行时变量的顺序:
指定 All 同时运行所有变量:
ContinuousAction (3)
ControllerLinking (5)
ControllerMethod (2)
ControllerPath (6)
默认情况下,Manipulate 响应所有支持的控制中第一个控制器:
用 "Gamepad" 指定一个控制器,通常包括两个模拟控制:
用 "Joystick" 指定一个控制器,通常包括一个主要模拟控制:
用 "Multi-Axis Controller" 作为控制器,类似空间鼠标:
ControlPlacement (2)
ControlType (11)
在默认情况下,Manipulate 选择一个 Manipulator 来控制指定变量:
用 ControlType 指定所使用的控制的类型,包括 None:
RadioButton、Setter、Checkbox 和 PopupMenu:
分别为每个 Manipulate 变量指定控制类型:
ControlType 可以和单个变量的控制规则相结合:
ControlType 以相同方式影响由 Control 指定的控件:
在 Automatic 设置中,选择一个适当的控制器:
Deinitialization (1)
在 Manipulate 不显示时,用 Deinitialization 计算表达式:
Deployed (2)
ExcludedContexts (1)
用 ExcludedContexts{} 保存所有非保护符号的定义:
Initialization (1)
对于 Manipulate 输出,用 Initialization 来指定的计算必要性:
LabelStyle (3)
LocalizeVariables (2)
SaveDefinitions (2)
SynchronousUpdating (2)
属性和关系 (5)
使用 InputForm 获取 Manipulate 的输入:
具体对象的 InputForm 也可以反映当前的状态:
输出时设置 Setting 来访问显示表达式:
使用 Dynamic 来进行局部更新,避免整个表达式的更新:
设置 Appearance->"Open" 来显示所有 Manipulator 控制:
使用 IntervalSlider 选项改变控件的行为:
可能存在的问题 (6)
当操纵结构图时,PlotRange 会发生改变和重置大小:
使用一个固定的 PlotRange 避免重置大小:
使用固定的 PlotRange 或 ImagePadding 避免重置大小:
Manipulate 仅“注意”明确的可见参数:
Manipulate 可以支持任意数目的 Locator 控件,只要每个控件的初始值是单个点:
如果 Manipulate 包含初始值是点列表的 Locator 控件,那么 Manipulate 不可以包含其他 Locator 控件:
在相同的 Manipulate 中混合单点定位器和多点定位器将产生一条警告信息:
默认情况下,不会引入附加到 "System`" 符号上的定义:
用 ExcludedContexts{} 从所有上下文中提取定义:
文本
Wolfram Research (2007),Manipulate,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Manipulate.html (更新于 2024 年).
CMS
Wolfram 语言. 2007. "Manipulate." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/Manipulate.html.
APA
Wolfram 语言. (2007). Manipulate. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Manipulate.html 年