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

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

また、コールバックがハンドルクラスのメソッドである場合、次の3つの引数があります。

function pushbutton1_Callback(self, hObject, eventdata)
于 2012-11-30T02:24:38.090 に答える
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 に答える