Как мне получить доступ к элементам управления моей фигуры GUIDE из других функций?

Я использую GUIDE для создания GUI для моего проекта MATLAB.

В одном из моих обратных вызовов для кнопки я вызываю функцию.

[Name]= otherFunction(inputVariable);

set(handles.name,'String',Name);

После того, как я получаю вывод этой функции, я устанавливаю метку имени в значение Name. Можно ли установить это внутри функции? Что мне нужно сделать, чтобы разрешить этой функции доступ к GUIData?

Я пытался использовать set/get внутри этой функции, но не могу заставить ее работать.

В качестве альтернативы, могу ли я сделать «дескрипторы» глобально доступными?


person Kyle Uithoven    schedule 05.04.2011    source источник


Ответы (1)


Начиная с пустого графического интерфейса и просто добавляя к нему кнопку (помеченную как «btnTest»), следующий код работает нормально:

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName(handles);
%]

%% --- Inner function
function [] = changeName(handles)
%[
    set(handles.btnTest, 'String', 'toto'); 
%]

Так что, вероятно, что-то еще не так в вашем коде.

Если вы не собираетесь передавать структуру handles функции changeName (т. е. иметь глобально доступные дескрипторы), вы можете сделать это следующим образом:

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName();
%]

%% --- Inner function
function [] = changeName()
%[   
    handles = guihandles(); % recover handles for current figure
    set(handles.btnTest, 'String', 'toto'); 
%]

Но это намного медленнее, чем передача «дескрипторов» напрямую.

person CitizenInsane    schedule 05.04.2011
comment
Большое спасибо за ваш быстрый отзыв. Оба эти случая все еще работают, если функции содержатся в отдельных файлах .m? - person Kyle Uithoven; 06.04.2011