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);

Knob with values from 0 to 100 in a UI figure window. Every tenth value is labeled, and there are tick marks between the labeled values.

指定 Figure 对象作为父容器。

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

Knob with values of Off, Low, Medium, and High in a UI figure window

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

fig = uifigure;
kb = uiknob(fig);

确定旋钮范围。

limits = kb.Limits
limits =

     0   100

更改范围和旋钮值。

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

Continuous knob with values from -10 to 10. The knob is pointing to the value 5.

创建一个分档旋钮。

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

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

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

Discrete knob with values of Cold, Warm, and Hot. The knob is pointing to Cold.

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

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,然后转动旋钮。当您释放鼠标按键时,编辑字段将更新,以反映新的旋钮值。

UI figure window with a discrete knob and an edit field. The knob is pointing to the value Medium, and the edit field contains the text "Medium".

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

请将以下代码复制粘贴到 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,然后转动旋钮。当您释放鼠标按键时,标签将更新,以反映新的旋钮值。

UI figure window with a continuous knob and a label. The knob is pointing to the value of 70, and the label text is "70".

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

请将以下代码复制粘贴到 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,然后转动旋钮。转动旋钮时编辑字段将更新,以显示不断变化的旋钮值。

UI figure window with a continuous knob and a numeric edit field. The knob is pointing between 70 and 80, and the edit field text is "75.91".

创建一个连续旋钮,当用户转动它时,它将执行一个操作。每次转动旋钮时,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 reverted to previous value.', ...
        'Invalid Value');
   kb.Value = previousvalue;
end
end

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

UI figure window with an error dialog box

输入参数

全部折叠

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

样式外观
'continuous'

Knob with values from 0 to 100. Every tenth value is labeled, and there are tick marks between the labeled values.

'discrete'

Knob with four discrete values: Off, Low, Medium, and High

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

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

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

版本历史记录

在 R2016a 中推出

全部展开