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

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

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

[Name]= otherFunction(inputVariable);

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

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

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

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

1 Ответ

3 голосов
/ 06 апреля 2011

Начиная с пустого графического интерфейса и просто добавляя к нему кнопку (помеченную как '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'); 
%]

Так что, возможно, в вашем коде что-то не так.

Если вы не хотите передавать структуру «дескрипторов» в функцию «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'); 
%]

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

...