2016-08-15 1 views
0

팝업 메뉴에 하나의 구성 요소를 추가 할 수있었습니다. 그러나 일단 GUI를 종료하면 GUI를 다시 열면 추가 된 구성 요소가 삭제됩니다. 영구히 저장하는 것이 어떻게 가능합니까?Matlab GUIDE 팝업 메뉴에 구성 요소를 영구적으로 추가

function add_transducer_Callback(hObject, eventdata, handles) 
% hObject handle to add_transducer (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

new_item= inputdlg('Please enter TEST'); 
new_item=char(new_item); 
tmp=get(handles.popupmenu7, 'string') 
tmp{end+1}=new_item 
set(handles.popupmenu7,'string',tmp) % to update the popup menu items 
guidata(hObject, handles.popupmenu7); 

보시다시피, 구성 요소를 추가하기 위해 푸시 버튼을 사용하고 있습니다.

+0

: [http://undocumentedmatlab.com/blog/fig-files-format](http://undocumentedmatlab.com/blog/를 fig-files-format) – Rotem

+0

사용할 태그의 태그 정보를 읽으십시오. [matlab-guide]에서 [guide]를 편집했습니다. –

답변

0

gui를 닫으면 개체가 삭제되고 모든 임시 데이터가 사라집니다.

지속성을 위해 파일에 목록을 저장하고 파일의 목록에 각각의 새로운 항목을 추가하여 변경 사항을 영구 보존해야합니다.

new_item= inputdlg('Please enter TEST'); 
new_item=char(new_item); 

fileContents = load('savedlist.mat'); %load previous list 
list = fileContents.list; %extract from file data 
list{end + 1} = new_item; %add new item 
save('savedlist.mat', 'list'); %save updated list EDIT: list MUST BE IN QUOTES 
set(handles.popupmenu7,'string',tmp) % to update the popup menu items 
guidata(hObject, handles.popupmenu7); 
+0

.list를 읽으려고 할 때 "비 구조적 배열의 필드를 참조하려고합니다."라는 주석을 얻고 있습니다. 아직도 상대적으로 새로운 것은 나에게 문제를 설명 할 수 있을까? 많은 감사합니다 –

+0

수정하는 것을 잊어 버렸던 오타가 있습니다 ... 편집하겠습니다 만, 나중에 사용하기 위해 질문에 대답하십시오 : 이전 줄에서는'savedlist.mat'의 내용을'fileContents '라는 구조체로로드합니다. '명령 창에 필드가 있는지 확인하기 위해'fileContents'라고 입력하여 구조체를 볼 수 있습니다. 그 필드를 나열하는 list라는 필드 대신 목록에 항목 이름의 필드가 있습니다. – Trogdor

+0

기본 항목 목록을 나열하는 셀인'list'라는 변수를 사용하여 매트 파일을 저장했다고 가정합니다. – Trogdor

0

솔루션은 간단 hgsave를 사용하여 업데이트 된 GUI를 저장한다.

코드 샘플에 약간의 버그가 있습니다.
guidata(hObject, handles.popupmenu7); 대신 guidata(hObject, handles);을 사용하십시오.

다음 코드 샘플 확인 : 여기 해결책을 발견

function add_transducer_Callback(hObject, eventdata, handles) 
% hObject handle to add_transducer (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
new_item = inputdlg('Please enter TEST'); 
new_item = char(new_item); 
tmp = get(handles.popupmenu7, 'string'); 
tmp{end+1} = new_item; 
set(handles.popupmenu7, 'string', tmp) % to update the popup menu items 
%guidata(hObject, handles.popupmenu7); 
guidata(hObject, handles); 

%Save updated GUI to 'updated_gui.fig'. 
hgsave('updated_gui.fig') 
관련 문제