我们在Matlab中回调UIcontrol按钮时得到的论点是什么

时间:2012-11-30 01:43:12

标签: matlab user-interface

我使用带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

2 个答案:

答案 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)