2012-11-30 35 views
0

我在圖像上使用帶有UIcontrol的按鈕顯示了很多按鈕(約20) 如何使用單個函數處理回調(它具有類似的行爲,我只是必須更改ID爲每個按鈕,我不想寫20回調每個)我們在Matlab中的UIcontrol按鈕的回調中得到的參數是什麼

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

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) 
0

您可以設置回調函數,以匿名函數,這將讓你更多的信息傳遞給回調

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

那麼你的回調函數將有簽名

function pb1_call(hObject,eventdata,buttonID) 
相關問題