2016-08-12 4 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

structhandlesなど)を更新すると、これらの変更はローカルコピーになり、他の機能では表示されません。変更を保存するには、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

関連する問題