2016-08-15 3 views
0

ポップアップメニューに1つのコンポーネントを追加することができました。しかし、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]に編集しました。 –

答えて

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'とタイプすることで構造体を見ることができます。そのフィールドをリストしたフィールドの代わりに、リスト内のアイテムに名前のついたフィールドがある可能性があります。 – 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') 
関連する問題