2016-08-12 2 views
0

gui 툴바에로드 버튼이 있습니다. 그것을 클릭하면 대화 상자에서 파일을 선택할 수 있습니다. sys이라는 이름의 개체가있는 .mat 파일을 엽니 다. MATLAB GUI가 핸들 구조를 수정 한 후 객체를 "잊어 버림"

내가 파일을 선택하면

는, 콜백은 다음 코드를 실행하도록되어 : 나는 handles.sys를 호출하고 그 모든 것을 볼 수있는이 콜백의 코드의 나머지 부분
handles.sys = sys; 
%% A bunch of other stuff to populate values from sys into the gui text fields %% 

이 있습니다. 그러나이 함수를 종료하면 handles.sys가 sys와 더 이상 동일하지 않습니다. gui가 "잊어 버렸거나"handles.sys 개체를 clobbered 것으로 보인다.

왜 이런 일이 발생하며이 작업을 수행하는 올바른 방법은 무엇입니까? 생성자를 사용하여 전체 sys 객체를 재구성해야합니까? handles.sys = newsys? sys 오브젝트가 임시 openfile_Callback 함수의 작업 영역 내에 만 존재했기 때문에 발생 했습니까?

답변

3

struct (예 : handles)을 업데이트하면 이러한 변경 사항이 로컬 복사본에 적용되므로 다른 기능에서 볼 수 없습니다. 변경 사항을 적용하려면 handles을 그림의 guidata 내에 저장해야합니다. guidata의 첫 번째 입력은 그림의 핸들이어야합니다 (예 : handles.fig). 이렇게하면 업데이트 된 handles 구조체가 GUI에서 자동으로 전달됩니다.

handles.sys = sys; 

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

나는 guidata (handles.figure1, handles);를 사용해야했다. 왜냐하면 이것이 기본적으로 matlab에 의해 만들어지기 때문이다. – toshiomagic

+0

@toshiomagic. 앞서 말했듯이, 나는 단지'handles.fig'를 예제로 사용했습니다. 그것은 모두 다를 것입니다. – Suever

관련 문제