Help to use Callback property in uicontrol

2 views (last 30 days)
Hi,
I don't understand how works the 'Callback' property in uicontrol. For example, I create a pushbutton as
pb = uicontrol('Style', 'pushbutton', 'Callback', @fun);
as callback function I need simply an increment of a variable "i" initially i=0; in other words when I click in the pushbutton it should cause increment of "i" by one.
I tried with:
function fun(in)
in=in+1;
end
and so...
pb = uicontrol('Style', 'pushbutton', 'Callback', {@fun, i});
but it doesn't work. Some suggestions ?
Thanks

Accepted Answer

Matt Fig
Matt Fig on 3 Nov 2012
Where is the variable stored? Callback functions take at least 2 inputs, always. Here is a simple demo, illustrating one way to do what you want. Note that I have made it step by step so you can take the semicolons off to see what is going on in the callback if needed.
function [] = demo_cb()
S.fh = figure('units','pixels',...
'position',[300 300 300 130],...
'menubar','none',...
'name','demo_cb',...
'numbertitle','off',...
'resize','off');
S.pb = uicontrol('style','push',...
'unit','pix',...
'position',[10 20 280 90],...
'string','I=1',...
'fontsize',14,...
'callback',@pb_call);
function [] = pb_call(H,E)
% Callback for pushbutton.
Str = get(H,'string');
Num = regexp(Str,'=','split');
NewNum = str2double(Num{2})+1;
set(H,'string',sprintf('I=%i',NewNum))
  7 Comments
Walter Roberson
Walter Roberson on 3 Nov 2012
In Matt's example the callback function is not nested.
Matt Fig
Matt Fig on 3 Nov 2012
Edited: Matt Fig on 3 Nov 2012
Sorry, I stepped away for a while. Walter is correct. The callback is a subfunction (or local function), not a nested function. I usually write GUIs with nested functions when I write them professionally, but using subfunctions is how most people first learn and in some cases it is simpler/preferred.
You can tell at a glance that there are no nested functions in that code because there are no END statements....

Sign in to comment.

More Answers (0)

Categories

Find more on Interactive Control and Callbacks in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!