我使用带UIcontrol的按钮在图像上显示了很多按钮。(大约20个) 如何使用单个函数处理回调(具有类似的行为,我只需要为每个按钮更改id,我不想为每个按钮编写20个回调。)
S = uicontrol('style','push',...
'units','pix',...
'position',Pos,...
'string',Button_name,...
'fontsize',10,...
'fontweight','bold');
set(S,'callback',{@pb1_call}) % Set the callbacks.
end
function [] = pb1_call(varargin)
disp(varargin)
end
答案 0 :(得分:0)
Matlab文档很好地描述了这一点,看看uicontrol属性。
function pushbutton1_Callback(hObject,eventdata)
display Goodbye
close(gcbf)
回调将触发触发对象和事件数据。如果您将标签设置到uicontrol上,您可以这样做:
function pushbutton1_Callback(hObject,eventdata)
buttonID = get(hObject, 'Tag');
switch buttonID
case 'button1'
...
end
另外值得注意的是,如果回调是句柄类的方法,那么有三个参数:
function pushbutton1_Callback(self, hObject, eventdata)
答案 1 :(得分:0)
您可以将回调函数设置为匿名函数,这样您就可以将其他信息传递给回调
set(S,'callback',{@(u,v)pb1_call(u,v,buttonID}) % Set the callbacks.
然后你的回调函数将有签名
function pb1_call(hObject,eventdata,buttonID)