Help to use Callback property in uicontrol
3 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Matt Fig
2012-11-3
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 个评论
Matt Fig
2012-11-3
编辑:Matt Fig
2012-11-3
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....
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!