Слишком много входных аргументов для обратного вызова uicontrol

Я пытаюсь написать полосу прокрутки, которая одновременно изменяет x-диапазон многих подзаголовков.

kids = get(gcf,'Children');
 h=uicontrol('style','slider',...
'units','normalized','position',Newpos,...
'callback',{@slide_axes,kids},'min',0,'max',xmax-chunkDuration);

Update_axes определяется в том же файле:

function slide_axes(h)
 set(h,'xlim',get(gcbo,'value')+[0 20000]); 

конец

Однако я получаю сообщение об ошибке:

??? Error using plot_scroll>slide_axes
Too many input arguments.

??? Error while evaluating uicontrol Callback

Я читал на FEX, что обратный вызов может передать два аргумента любой функции обратного вызова. Однако, когда я изменил подпись slide_axes на slide_axes(h,evt), ошибка осталась.


person mac389    schedule 16.01.2013    source источник
comment
Ваше определение обратного вызова должно быть «обратным вызовом», {@slide_axes,kids}?   -  person HebeleHododo    schedule 16.01.2013
comment
Да, это плохая работа по вырезанию и вставке, а не ошибка в реальном коде. Исправлена.   -  person mac389    schedule 16.01.2013


Ответы (1)


Аргументы, которые вы передаете (h и evt), являются значениями по умолчанию MATLAB. Если вы хотите передать дополнительные аргументы в свою функцию обратного вызова, вам нужно написать их после h и evt. Как это:

function slide_axes(h, evt, k)
    % k is kids.
end
person HebeleHododo    schedule 16.01.2013
comment
Вы не поверите, я только что понял это! - person mac389; 16.01.2013