uispinner
创建微调器组件
说明
示例
在图窗窗口中创建微调器
fig = uifigure; spn = uispinner(fig);
在面板上创建微调器
在面板中创建微调器。
fig = uifigure; pnl = uipanel(fig); spn = uispinner(pnl);
设置和访问微调器属性值
创建一个微调器,限制 App 用户只能输入 0 到 100(含 0 和 100)之间的值。
创建一个微调器。
fig = uifigure; spn = uispinner(fig);
确定范围。返回的值表明上限和下限不受限制。
limits = spn.Limits
limits = -Inf Inf
将范围设置为 0 到 100。
spn.Limits = [0 100];
创建微调器并指定范围是否包含边界值
创建一个微调器,允许 App 用户输入大于 -5 且小于或等于 10 的值。
fig = uifigure; spn = uispinner(fig,'Limits', [-5 10],... 'LowerLimitInclusive','off',... 'UpperLimitInclusive','on',... 'Value', 5);
运行代码。如果您在微调器中输入的值超出该范围,MATLAB 将自动显示一条消息,指出存在的问题。MATLAB 然后会将值还原为上一个有效值。
创建只显示两位小数值的微调器
创建一个微调器,允许 App 用户输入任意值,但始终只显示两位小数。请注意,MATLAB 会存储 App 用户输入的确切值。
fig = uifigure; spn = uispinner(fig,'ValueDisplayFormat', '%.2f');
运行代码,然后在微调器中输入 5.555。在微调器外点击。微调器显示 5.55。
MATLAB 存储的原始值为 5.555。
在微调器中点击,将显示最初键入的值。
编写响应以下操作的代码:更改微调器值
创建一个微调器和一个滑块控件。当 App 用户更改微调器值时,滑块将更新以匹配该值。
请将以下代码保存到 MATLAB 路径中的 spinnerValue.m
中。以下代码将创建一个图窗窗口,其中包含一个滑块控件和一个微调器。当 App 用户更改微调器值时,ValueChangedFcn
将更新微调器,以反映滑块值。
function spinnervalue fig = uifigure('Position',[100 100 370 280]); sld = uislider(fig,... 'Position',[90 220 120 3]); spn = uispinner(fig,... 'Position',[100 140 100 22],... 'Limits',sld.Limits,... 'ValueChangedFcn',@(spn,event) updateSlider(spn,sld)); end % Create ValueChangedFcn callback function updateSlider(spn,sld) sld.Value = spn.Value; end
运行 spinnerValue
。
点击并按住微调器中的向上箭头,当值达到 24 时释放鼠标按键。滑块将移动,以指示微调器值。
编写响应以下操作的代码:变化中的微调器的值
创建一个微调器和一个滑块控件。当 App 用户更改微调器值时,滑块将不断更新以匹配该值。
请将以下代码保存到 MATLAB 路径中的 showChangingValue.m
中。以下代码将创建一个图窗窗口,其中包含一个滑块控件和一个微调器。当 App 用户更改微调器值时,ValueChangingFcn
将不断更新滑块,以反映不断变化的微调器值。
function showChangingValue fig = uifigure('Position',[100 100 370 280]); sld = uislider(fig,... 'Position',[90 220 120 3]); spn = uispinner(fig,... 'Position',[100 140 100 22],... 'Limits',sld.Limits,... 'ValueChangingFcn',@(spn,event) spinnerChanging(event,sld)); end % Create ValueChangingFcn callback function spinnerChanging(event,sld) sld.Value = event.Value; end
运行 showChangingValue
。
点击并按住微调器中的向上箭头,当值达到 24 时释放鼠标按键。滑块将随着微调器值的变化而移动。
编写响应以下操作的代码:计算微调器值的变化
编写 ValueChangedFcn
回调,以确定值相对于上一个微调器值是增加还是减少。将信号灯的颜色设置为值增加时显示绿色,值减少时显示红色。
请将以下代码保存到 MATLAB 路径中的 upOrDown.m
中。
function upOrDown fig = uifigure(... 'Position',[100 100 190 170]); lmp = uilamp(fig,... 'Position',[90 50 20 20],... 'Color','green'); spn = uispinner(fig,... 'Position',[50 100 100 22],... 'ValueChangedFcn',@(spn,event) spinnerValueChanged(event,lmp)); end % Create ValueChangedFcn that uses event data function spinnerValueChanged(event,lmp) newValue = event.Value; previousValue = event.PreviousValue; difference = newValue-previousValue; if difference > 0 lmp.Color = 'green'; else lmp.Color = 'red'; end end
运行 upOrDown
。
当您每次更改微调器值时,ValueChangedFcn
都会确定值是增加还是减少,并相应地设置信号灯的颜色。
输入参数
parent
— 父容器
Figure
对象 (默认) | Tab
对象 | Panel
对象 | ButtonGroup
对象 | GridLayout
对象
父容器,指定为使用 uifigure
函数创建的 Figure
对象或其子容器之一:Tab
、Panel
、ButtonGroup
或 GridLayout
。如果不指定父容器,MATLAB 会调用 uifigure
函数创建新 Figure
对象充当父容器。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: 'Value',150
指定在微调器中显示数字 50。
此处所列的属性只是可用属性中的一部分。有关完整列表,请参阅 Spinner 属性。
Value
— 微调器值
0 (默认) | 数值
微调器值,指定为数值。
当 App 用户键入或更改微调器中的值时,值为字符向量。当 App 用户按下 Enter 键或者更改焦点时,MATLAB 会将 App 用户输入的值转换为双精度数字。
如果出现以下情况,MATLAB 将拒绝该值:
它无法将字符向量转换为数值标量。
值是 NaN、空白或复数。
值是数学表达式,如
1+2
。值小于或大于
Limits
属性指定的值。
如果 MATLAB 拒绝 App 用户输入的值,将会显示一个工具提示,说明对值的要求。微调器立即还原为以前的值,而且不会运行 ValueChangedFcn
。
示例: 10
数据类型: double
ValueDisplayFormat
— 值的显示格式
'%11.4g'
(默认) | 字符向量 | 字符串标量
值的显示格式,指定为字符向量或字符串标量。
MATLAB 使用 sprintf
以指定的格式显示值。
您可以混合使用文本和格式化操作符。例如:
spin = uispinner('ValueDisplayFormat','%.0f MS/s');
生成的微调器组件如下所示:
当 App 用户点击微调器字段时,字段将显示不带文本的值。
有关支持的格式化操作符的完整列表,请参阅 sprintf
。
RoundFractionalValues
— 小数值的舍入方法
'off'
(默认) | on/off 逻辑值
由 App 用户输入的小数值的舍入方法,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
'on'
- 如果生成无效值,MATLAB 将对值进行舍入并执行ValueChangedFcn
回调。如果生成的值超出Limits
的下限或上限,MATLAB 将把值舍入到Limits
之内的最接近值,然后执行回调。'off'
- MATLAB 不会将小数值舍入为整数。
如果以编程方式将 RoundFractionalValues
属性值从 'off'
更改为 'on'
,MATLAB 将按照下列规则执行操作:
如果舍入现有值之后得到的整数位于
Limits
属性指定的范围内,MATLAB 将对现有值进行向上舍入。如果舍入现有值之后得到的整数小于下限值,MATLAB 将对现有值进行向上舍入。
如果舍入现有值之后得到的整数大于上限值,MATLAB 将对现有值进行向下舍入。
如果指定的范围导致无法生成位于该范围内的有效整数,MATLAB 将把
RoundFractionalValues
属性值设置回'off'
并显示一条错误消息。
Step
— 值增加或减少的数量
1
(默认) | 数值标量
当 App 用户按向上和向下箭头时,Value
属性相应增加或减少的数量。
Limits
— 微调器的最小值和最大值
[-Inf Inf]
(默认) | 二元素数值数组
微调器的最小值和最大值,指定为二元素数值数组。第一个值必须小于或等于第二个值。将数组元素设置为 -Inf
或 Inf
分别指定无最小值或无最大值。
如果您更改 Limits
,使得 Value
小于新的下限值,MATLAB 将把 Value
设置为新范围内的最小值。例如,假设 Limits
为 [0 100]
,Value
为 20。如果 Limits
更改为 [50 100]
(包含边界值),MATLAB 将把 Value
设置为 50。
同样,如果您更改 Limits
,使得 Value
大于新的上限值,MATLAB 会将 Value
设置为新的上限值(假定范围包含边界值)。
示例: [-Inf 200]
示例: [-100 Inf]
示例: [-100 200]
数据类型: double
LowerLimitInclusive
— 下限值的包含性
'on'
(默认) | on/off 逻辑值
下限值的包含性,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
'on'
- 值必须等于或大于下限值。'off'
- 值必须大于下限值。
UpperLimitInclusive
— 上限值的包含性
'on'
(默认) | on/off 逻辑值
上限值的包含性,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
'on'
- 值必须等于或小于上限值。'off'
- 值必须小于上限值。
例如,如果您希望数值输入介于 0 和 1 之间,不含 0 和 1,请执行以下所有操作:
将
Limits
属性值设置为[0 1]
。将
UpperLimitInclusive
属性设置为'off'
。将
LowerLimitInclusive
属性设置为'off'
。
ValueChangedFcn
— 更改值后执行的回调
''
(默认) | 函数句柄 | 元胞数组 | 字符向量
更改值后执行的回调,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
当用户更改焦点,或者在更改微调器值之后按 Enter 键时,将会执行此回调。不管用户是通过键入值还是通过按箭头键来更改微调器值,都会执行此回调。如果以编程方式更改微调器值,将不会执行此回调。
此回调函数可以访问有关用户与微调器的交互的特定信息。MATLAB 将 ValueChangedData
对象中的此信息作为第二个参量传递给回调函数。在 App 设计工具中,该参量名为 event
。您可以使用圆点表示法查询对象属性。例如,event.PreviousValue
返回微调器的上一个值。ValueChangedData
对象不可用于指定为字符向量的回调函数。
下表列出了 ValueChangedData
对象的属性。
属性 | 值 |
---|---|
Value | 微调器在 App 用户最近一次与它交互之后的值 |
PreviousValue | 微调器在 App 用户最近一次与它交互之前的值 |
Source | 执行回调的组件 |
EventName | 'ValueChanged' |
有关编写回调的详细信息,请参阅App 设计工具中的回调。
ValueChangingFcn
— 更改值后执行的回调
''
(默认) | 函数句柄 | 元胞数组 | 字符向量
更改值后执行的回调,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
当用户点击并按住微调器上的向上或向下箭头时,将会执行此回调函数。如果以编程方式更改 Value
属性,将不会执行此回调函数。
此回调函数可以访问有关用户与微调器的交互的特定信息。MATLAB 将 ValueChangingData
对象中的此信息作为第二个参量传递给回调函数。在 App 设计工具中,该参量名为 event
。您可以使用圆点表示法查询对象属性。例如,event.Value
返回微调器的当前值。ValueChangingData
对象不可用于指定为字符向量的回调函数。
下表列出了 ValueChangingData
对象的属性。
属性 | 值 |
---|---|
Value | 微调器在 App 用户与它交互时的当前值 |
Source | 执行回调的组件 |
EventName | 'ValueChanging' |
在 App 用户释放箭头键之前,Spinner
的 Value
属性不会更新。因此,要获取按下箭头键时的值,您的代码必须获取 ValueChangingData
对象的 Value
属性。
注意
请避免从其自己的 ValueChangingFcn
回调中更新 Spinner
对象的 Value
属性,因为这可能导致意外行为。要更新微调器值以响应用户输入,请改用 ValueChangedFcn
回调。
回调按照如下方式执行:
如果 App 用户点击微调器中的向上或向下箭头,回调将执行一次。例如,假设微调器值为 2,
Step
值为 1。如果 App 用户点击向上箭头,回调将执行一次。如果 App 用户按住微调器中的向上或向下箭头,回调将重复执行。例如,如果 App 用户点击并按住向上箭头,回调将执行多次,直到 App 用户释放向上箭头为止。
有关编写回调的详细信息,请参阅App 设计工具中的回调。
Position
— 微调器的位置和大小
[100 100 100 22]
(默认) | [left bottom width height]
微调器相对于父容器的位置和大小,指定为向量 [left bottom width height]
。此表介绍该向量中的每个元素。
元素 | 描述 |
---|---|
left | 父容器的内部左边缘与微调器的外部左边缘之间的距离 |
bottom | 父容器的内部下边缘与微调器的外部下边缘之间的距离 |
width | 微调器的左右外部边缘之间的距离 |
height | 微调器的上下外部边缘之间的距离 |
所有测量值都以像素为单位。
Position
值相对于父容器的可绘制区域。可绘制区域是指容器边框内的区域,不包括装饰元素(如菜单栏或标题)所占的区域。
示例: [100 100 100 22]
版本历史记录
在 R2016a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)