2014-01-10 60 views
1

我想在GUI matlab中創建一個按鈕,並按下它時調用一個函數。這段代碼不起作用。我也嘗試在uicontrol的最後一個參數中使用這些值: fnHi,'fnHi','fnHi();'無法調用matlab中的uicontrol按鈕的回調

的代碼是:

function [] = testui() 
    function fnHi() 
     fprintf('hi'); 
    end 
    fnHiHandler = @fnHi; 
    fnHiHandler(); fnHi(); 
    figure(); 
    uicontrol('Style', 'pushbutton', 'string', 'Hi', 'callback', fnHiHandler); 
end 

輸出是:

testui() 
hihiUndefined function or variable 'fnHiHandler'. 

Error while evaluating uicontrol Callback 

所以函數工作,因爲它被調用了兩次,但是當我按下按鈕它崩潰。 我不想使用多個文件。謝謝。

回答

1

好的,我找到了答案。問題是fnHi應該接收兩個參數,否則會崩潰,說輸入參數太多。所以這個代碼的作品:

function [] = testui() 
    function fnHi(source,eventdata) 
     fprintf('hi'); 
    end 
    fnHiHandler = @fnHi; 
    fnHiHandler(); fnHi(); 
    figure(); 
    uicontrol('Style', 'pushbutton', 'string', 'Hi', 'callback', fnHiHandler); 
end