uiknob

Create knob component

Description

kb = uiknob creates a knob in a new figure window and returns the Knob object. MATLAB® calls the uifigure function to create the figure.

kb = uiknob(style) specifies the knob style.

example

kb = uiknob(parent) creates the knob in the specified parent container. The parent can be a Figure created using the uifigure function, or one of its child containers.

example

kb = uiknob(parent,style) creates a knob of the specified style in the specified parent container.

example

kb = uiknob(___,Name,Value) specifies object properties using one or more Name,Value pair arguments. Use this option with any of the input argument combinations in the previous syntaxes.

Examples

Create Continuous Knob

fig = uifigure;
kb = uiknob(fig);

Create Discrete Knob

Specify a Figure object as the parent container.

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

Set and Access Continuous Knob Property Values

Create a continuous knob in a figure.

fig = uifigure;
kb = uiknob(fig);

Determine the knob limits.

limits = kb.Limits
limits =

     0   100

Change the limits and the knob value.

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

Set and Access Property Values

Create a discrete knob.

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

Change the knob states. Associate specific data with the knob states by configuring ItemsData. In this case, ItemsData reflects temperatures in degrees Fahrenheit.

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

Get the temperature associated with the current knob value.

degrees = kb.Value
degrees =

    32

Code Response to Changed Discrete Knob Setting

Create a discrete knob that performs an action after the app user turns it. Turning the knob updates the value of a text field to reflect the app user's choice.

Copy and paste the following code into a file named displayknobvalue.m on your MATLAB path. This code creates a window containing a discrete knob and a text field. It specifies a ValueChangedFcn callback to update the text field when the knob is turned.

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

Run displayKnobValue, and then turn the knob. When you release the mouse button, the edit field is updated to reflect the new knob value.

Code Response to Changed Continuous Knob Setting

Create a continuous knob that performs an action after the user turns it. Turning the knob updates the value of a label to reflect the user's choice.

Copy and paste the following code into a file named showknobvalue.m on your MATLAB path. This code creates a window containing a continuous knob and a label field. It specifies a ValueChangedFcn callback to update the label when the knob is turned.

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

Run showKnobValue and turn the knob. When you release the mouse button, the label is updated to reflect the new knob value.

Code Response to Changing Continuous Knob Setting

Create a continuous knob that repeatedly performs an action as the user is turning it. Instead of updating a label once when the user releases the mouse button, this knob updates the label as the knob is being turned.

Copy and paste the following code into a file named showchangingvalue.m on your MATLAB path. This code creates a window containing a continuous knob and a label field. It specifies a ValueChangingFcn callback to keep updating the label as the knob is being turned.

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

Run showChangingValue, and turn the knob. As you do so, the numeric edit field is updated to show the changing knob values.

Code Response to Invalid Knob Setting

Create a continuous knob that performs an action after the user turns it. each turn of the knob causes MATLAB to perform a calculation using the current and previous knob values.

Copy and paste the following code into a file named increaseOnly.m on your MATLAB path. This code creates a window containing a continuous knob. It specifies a ValueChangedFcn callback for the knob to display an Invalid Value dialog box when the app user attempts to decrease the knob value.

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

Run increaseOnly, increase the knob value, and then try to decrease it. When you try to decrease the value, an error dialog box displays and the value is reverted to the previous valid value. You can only increase the knob value.

Input Arguments

collapse all

Style of knob, specified as one of the following values:

StyleAppearance
'continuous'

'discrete'

Parent container, specified as a Figure object created using the uifigure function, or one of its child containers: Tab, Panel, ButtonGroup, or GridLayout. If you do not specify a parent container, MATLAB calls the uifigure function to create a new Figure object that serves as the parent container.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Each type of knob object supports a different set of properties. For a full list of properties and descriptions for each type, see the associated property page.

Introduced in R2016a