0

我正在使用带有 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
4

2 回答 2

0

您可以将回调函数设置为匿名函数,这将允许您将附加信息传递给回调

set(S,'callback',{@(u,v)pb1_call(u,v,buttonID}) % Set the callbacks.

然后您的回调函数将具有签名

function pb1_call(hObject,eventdata,buttonID)
于 2012-11-30T08:49:05.967 回答
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)
于 2012-11-30T02:24:38.090 回答