Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

uiknob

创建旋钮组件

说明

kb = uiknob 在新图窗窗口中创建一个旋钮,并返回 Knob 对象。MATLAB® 调用 uifigure 函数来创建该图窗。

kb = uiknob(style) 指定旋钮样式。

示例

kb = uiknob(parent) 在指定的父容器中创建旋钮。父容器可以是使用 uifigure 函数创建的 Figure 或其子容器之一。

示例

kb = uiknob(parent,style) 在指定的父容器中创建指定样式的旋钮。

示例

kb = uiknob(___,Name,Value) 使用一个或多个 Name,Value 对组参数指定对象属性。可以将此选项与前面语法中的任何输入参数组合一起使用。

示例

创建连续旋钮

fig = uifigure;
kb = uiknob(fig);

创建分档旋钮

指定 Figure 对象作为父容器。

fig = uifigure('Position',[100 100 300 250]);
kb = uiknob(fig,'discrete');

设置和访问连续旋钮的属性值

在图窗中创建一个连续旋钮。

fig = uifigure;
kb = uiknob(fig);

确定旋钮范围。

limits = kb.Limits
limits =

     0   100

更改范围和旋钮值。

kb.Limits = [-10 10];
kb.Value = 5;

设置和访问属性值

创建一个分档旋钮。

fig = uifigure;
kb = uiknob(fig,'discrete');

更改旋钮状态。通过配置 ItemsData,将特定数据与旋钮状态相关联。在本例中,ItemsData 以华氏度为单位反映温度。

kb.Items = {'Cold', 'Warm', 'Hot'};
kb.ItemsData = {32, 80, 212};

获取与当前旋钮值关联的温度。

degrees = kb.Value
degrees =

    32

编写响应以下操作的代码:更改分档旋钮的设置

创建一个分档旋钮,当 App 用户转动它时,它将执行一个操作。转动旋钮将更新文本字段的值,以反映 App 用户的选择。

请将以下代码复制粘贴到 MATLAB 路径中名为 displayknobvalue.m 的文件中。以下代码将创建一个窗口,其中包含一个分档旋钮和一个文本字段。它指定 ValueChangedFcn 回调,以便在转动旋钮时更新文本字段。

function displayKnobValue
% Create figure window

fig = uifigure('Position',[100 100 283 275]);

% Create the text field
txt = uieditfield(fig,'text',...
    'Position', [69 82 100 22]);

% Create the knob
kb = uiknob(fig,'discrete',...
    'Position',[89 142 60 60],...
    'ValueChangedFcn',@(kb,event) knobTurned(kb,txt));
end

% Code the knob callback function
function knobTurned(knob,txt)
txt.Value = knob.Value;
end

运行 displayKnobValue,然后转动旋钮。当您释放鼠标按键时,编辑字段将更新,以反映新的旋钮值。

编写响应以下操作的代码:更改连续旋钮的设置

创建一个连续旋钮,当用户转动它时,它将执行一个操作。转动旋钮将更新标签的值,以反映用户的选择。

请将以下代码复制粘贴到 MATLAB 路径中名为 showknobvalue.m 的文件中。以下代码将创建一个窗口,其中包含一个连续旋钮和一个标签字段。它指定 ValueChangedFcn 回调,以便在转动旋钮时更新标签。

function showKnobValue
% Create figure window and components
fig = uifigure('Position',[100 100 283 275]);

% Create label
lbl = uilabel(fig,...
    'Position',[218 177 50 15],...
    'Text','0');

% Create knob
kb = uiknob(fig,...
    'Position',[89 142 60 60],...
    'ValueChangedFcn', @(kb,event) knobTurned(kb,lbl));
end

% Create ValueChangedFcn callback
function knobTurned(kb,lbl)
num = kb.Value;
lbl.Text = num2str(num);
end

运行 showKnobValue,然后转动旋钮。当您释放鼠标按键时,标签将更新,以反映新的旋钮值。

编写响应以下操作的代码:变化中的连续旋钮设置

创建一个连续旋钮,当用户转动它时,它将重复执行一个操作。当用户释放鼠标按键时,标签不是更新一次,而是随着旋钮的转动而连续更新。

请将以下代码复制粘贴到 MATLAB 路径中名为 showchangingvalue.m 的文件中。以下代码将创建一个窗口,其中包含一个连续旋钮和一个标签字段。它指定 ValueChangingFcn 回调,以便在转动旋钮时不断更新标签。

function showChangingValue
% Create figure window
fig = uifigure('Position',[100 100 283 275]);

% Create numeric edit field
num = uieditfield(fig,'numeric',...
    'Position',[69 82 100 20]);

% Create knob
kb = uiknob(fig,...
    'Position',[89 142 60 60],...
    'ValueChangingFcn',@(kb,event) knobTurned(kb,event,num));
end

% Create ValueChangingFcn callback
function knobTurned(kb,event,num)
num.Value = event.Value;
end

运行 showChangingValue,然后转动旋钮。转动旋钮时,数值编辑字段将更新,以显示不断变化的旋钮值。

编写响应以下操作的代码:无效的旋钮设置

创建一个连续旋钮,当用户转动它时,它将执行一个操作。每次转动旋钮时,MATLAB 都会使用当前旋钮值和上一个旋钮值执行一次计算。

请将以下代码复制粘贴到 MATLAB 路径中名为 increaseOnly.m 的文件中。以下代码将创建一个窗口,其中包含一个连续旋钮。它为旋钮指定 ValueChangedFcn 回调,以便在 App 用户试图减小旋钮值时,显示无效值对话框。

function increaseOnly
% Create figure window
fig = uifigure('Position',[100 100 400 275]);

% Create knob
kb = uiknob(fig,...
    'Position',[150 125 60 60],...
    'ValueChangedFcn',@(kb,event) nValChanged(kb,event,fig));
end

% Create ValueChangedFcn callback
function nValChanged(kb,event,fig)
newvalue = event.Value;
previousvalue = event.PreviousValue;
if previousvalue >  newvalue
   uialert(fig, 'Increase value only. Value set to previous value.',...
        'Invalid Value');
   kb.Value = previousvalue;
end
end

运行 increaseOnly,增大旋钮值,然后尝试减小旋钮值。当您试图减小值时,将显示一个错误对话框,值将还原为上一个有效值。只能增大旋钮值。

输入参数

全部折叠

旋钮的样式,指定为下列值之一:

样式外观
'continuous'

'discrete'

父容器,指定为使用 uifigure 函数创建的 Figure 对象或其子容器之一:TabPanelButtonGroupGridLayout。如果不指定父容器,MATLAB 会调用 uifigure 函数创建新 Figure 对象充当父容器。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

每种类型的旋钮对象支持一组不同的属性。有关每种类型的属性和说明的完整列表,请参阅相关联的属性页。

在 R2016a 中推出