question about the function of callback
1 次查看(过去 30 天)
显示 更早的评论
hello, I have a question about the writing the function of callback. # how to callback a group of function? For exemple, We use 'callback' like this way: 'callback', @pushbutton_callback. Here pushbutton_callback is a function. In my interface there is many same functions repeated, Can I realize to write the function of callback like @pushbutton_callback(k), and there is the function of callback related. I know writing directly like pushbutton_callback(k) is not correct. I didn't find something similar. What should I do?
2 个评论
Andy
2011-5-17
Can you clarify: do you want a single pushbutton to fire off multiple callback functions, or do you want to set the callbacks for all of your pushbuttons in one call?
采纳的回答
Jan
2011-5-17
Function handles cannot be combined in an array due to the konfusion of the indexing and the input arguments. But you can create a cell of function handles:
C = {@sin, @cos, @tan};
for i = 1:3
feval(C{i}, pi)
% In modern Matlab versions also directly:
% C{i}(pi)
end
Similar works for pushbutton_callback{k}.
更多回答(2 个)
Paulo Silva
2011-5-17
If you have several pushbuttons each one with his own function, try this:
hb = uicontrol('Style','pushbutton',...
'String','PushMe');
set(hb,'Callback',sprintf('pushbutton%d_callback',k))
%for button1
%pushbutton1_callback
This also might work (not tested)
hb = uicontrol('Style','pushbutton',...
'String','PushMe');
set(hb,'Callback',sprintf('@pushbutton%d_callback',k))
%for button1
%pushbutton1_callback
0 个评论
Yoav Livneh
2011-5-17
Another option is to do this:
push_button(k) = uicontrol('style','pushbutton',...
'callback',{@pushbutton_callback_main,k});
and the callback function:
function pushbutton_callback_main(obj,event,idx)
% Run pushbutton_callback number idx
eval(['pushbutton_callback' idx]);
end
There's probably a way to do this without eval but can't think of one right now
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!