Ошибка при вызове локальной переменной в GUI MATLAB - PullRequest
0 голосов
/ 28 мая 2010

Я получаю эту ошибку:

Error in ==> APP>pushbutton2_Callback at 109
img=imread(FileName)

Когда я пытаюсь использовать FileName в pushbutton2_Callback Я получаю упомянутую ошибкуpushbutton1_Callback.

Ответы [ 2 ]

4 голосов
/ 28 мая 2010

Вам нужно передать переменную FileName из одного обратного вызова в другой. Для этого вы можете присвоить переменную полю 'UserData' pushbutton1. Ваш код под pushbutton1_Callback должен выглядеть примерно так:

FileName=uigetfile();
set(handles.pushbutton1,'UserData',FileName);

Далее вам нужно прочитать переменную под вашим pushbutton2_Callback:

FileName=get(handles.pushbutton1,'UserData');
img=imread(FileName);

Если вы хотите проверить свои результаты, вы всегда можете оставить точки с запятой в конце строк.

1 голос
/ 28 мая 2010

Существует общий метод хранения данных с вашим графическим интерфейсом для использования между обратными вызовами. Вы можете добавить произвольные поля к объекту дескрипторов, чтобы вы могли добавить обратный вызов pushbutton1

handles.filename = FileName;
guidata(hObject,handles); 

Вторая строка представляет собой шаблонный код, который необходимо поместить в конце любого обратного вызова, который изменяет значения в структуре дескрипторов.

Теперь все ваши обратные вызовы будут иметь доступ к имени файла. В вашем конкретном случае, в обратном вызове 2, вы бы получили

img = imread(handles.filename);

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

handles.img = img;
guidata(hObject, handles);
...