2016-08-12 6 views
0

У меня есть кнопка загрузки на панели инструментов gui. Когда я нажимаю на нее, это позволяет мне выбрать файл из диалогового окна. Я открываю файл .mat, в котором есть объект с именем sys.MATLAB GUI «забывает» объекты после изменения структуры ручек

После того, как я выбираю файл, обратный вызов должен выполнить следующий код:

handles.sys = sys; 
%% A bunch of other stuff to populate values from sys into the gui text fields %% 

Для остальной части кода в этом обратного вызова я могу позвонить handles.sys и увидеть, что все есть. Однако, когда я выхожу из этой функции, handleles.sys больше не равен sys. Кажется, что gui «забыл» или скрепил объект handleles.sys.

Почему это происходит и как правильно это сделать? Нужно ли мне восстановить весь мой объект sys с помощью конструктора, а затем вызвать handles.sys = newsys? Это происходит потому, что объект sys существует только во временном рабочем пространстве функции openfile_Callback?

ответ

3

При обновлении struct (например, handles) эти изменения относятся к локальной копии и, следовательно, не отображаются другими функциями. Вам нужно сохранить handles в пределах guidata рисунка для изменений, которые необходимо сохранить. Первый вход для guidata должен быть ручкой на рисунке (в качестве примера я использовал handles.fig). После этого обновленная структура handles будет автоматически передаваться через ваш графический интерфейс.

handles.sys = sys; 

% "Save" the updated handles struct in the figure 
guidata(handles.fig, handles) 
+0

Мне пришлось использовать 'guidata (handleles.figure1, handle);' потому что это то, что по умолчанию создает Matlab. – toshiomagic

+0

@toshiomagic Право. Как я уже сказал, я просто использовал 'handles.fig' в качестве примера. Все будет по-другому. – Suever

 Смежные вопросы

  • Нет связанных вопросов^_^