Create continuous or discrete knob component
Use only with App Designer or figures
created with the uifigure
function. Apps
created with GUIDE or the figure
function do
not support knob components.
creates
a knob in a new UI figure window and returns the knob object.kb
= uiknob
specifies
the knob style.kb
= uiknob(style
)
specifies
the parent object in which to create the knob. The parent object must
be a UI figure window, or a tab, panel, or button group within a UI
figure window. kb
= uiknob(parent
)
specifies
knob properties using one or more kb
= uiknob(___,Name,Value
)Name,Value
pair
arguments. Use this option with any of the input argument combinations
in the previous syntaxes.
fig = uifigure; kb = uiknob(fig);
Specify a small UI figure window as the parent for a discrete knob.
fig = uifigure('Position',[100 100 300 250]); kb = uiknob(fig,'discrete');
Create a continuous knob in a UI figure window.
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;
Create a discrete knob.
fig = uifigure;
kb = uiknob(fig,'discrete');
Change the knob states. Set the data associated with the knob states to reflect 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
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 UI figure window containing
a discrete knob and a text field. It specifies a ValueChangedFcn
callback
for the knob to update the text field when the knob is turned.
function displayKnobValue % Create UI 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.
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 UI figure window containing
a continuous knob and a label field. It specifies a ValueChangedFcn
callback
for the knob to update the label when the knob is turned.
function showKnobValue % Create UI 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.
Create a continuous knob that repeatedly performs an action as the user is turning it. Instead of updating a label just once when the user releases the mouse button, this knob makes changes to 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 UI figure window containing
a continuous knob and a label field. It specifies a ValueChangingFcn
callback
for the knob to keep updating the label as the knob is being turned.
unction showChangingValue % Create UI 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.
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 UI figure window containing
a continuous knob. It specifies a ValueChangedFcn
callback
for the knob to display an Invalid Value dialog box if the app user
attempts to decrease the knob value.
function increaseOnly % Create UI 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
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.