Я пытаюсь создать простую кнопку «просмотра» на графическом интерфейсе Matlab (R2016a). Мой код что-то вроде:Использование uigetdir в качестве обратного вызова для кнопки, сбой из-за странных, недопустимых аргументов
hd = dialog;
hb = uicontrol('parent',hd,'style','pushbutton','string','browse',...
'callback',@uigetdir);
Функция обратного вызова uigetdir
имеет 2 дополнительных аргументов STARTPATH, TITLE
. В принципе я мог бы передать их на моем обратном вызов путем конкатенации их с помощью функции ручки на массиве ячеек, такие как
hd = dialog;
hb = uicontrol('parent',hd,'style','pushbutton','string','browse',...
'callback',{@uigetdir,'myStartPath','myTitle');
ли звонки uigetdir
моя кнопка просмотра с или без дополнительных аргументов, это приведет к краху. Различные ошибки, одна и та же причина: uicontrol
решает включить 2 невостребованных, странных переменных (содержащих свойства пользовательского интерфейса) в качестве аргументов функции обратного вызова, а uigetdir
не знает, что с ними делать.
Означает ли это, что я не могу использовать uigetdir
(или почти любую другую встроенную функцию) в качестве функции обратного вызова в графическом интерфейсе? Должно быть решение, помимо написания пользовательской функции, нет?
Я предлагаю прочитать [документацию для обратных вызовов] (http://www.mathworks.com/help/matlab/creating_guis/write-callbacks-using-the-programmatic-workflow.html#f16-1001315) – excaza
Действительно? Из документации: «Определение функции должно определять два входных аргумента:« hObject »и« callbackdata ». Handle Graphics® автоматически передает« hObject »и« callbackdata »при вызове функции». – excaza
Также из документации: «Примечание. Если вы хотите использовать существующую функцию, которая не поддерживает аргументы« hObject »и« callbackdata », вы можете указать ее как анонимную функцию. Например,' uicontrol ('Style' , 'slider', 'Callback', @ (hObject, callbackdata) myfunction (x)); '" – excaza