2014-01-10 6 views
1

Я пытаюсь создать кнопку в графическом интерфейсе GUI и вызвать функцию при ее нажатии. Этот код не работает. Я также попытался использовать эти значения в последнем аргументе uicontrol: fnHi, 'fnHi', 'fnHi();'Не удается вызвать обратный вызов кнопки uicontrol в matlab

Код:

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 
Смежные вопросы