2012-04-18 26 views
3

私はMATLABのGUIプログラミングの初心者です。Matlab:別の関数で呼び出すときにコールバック関数からGUIハンドル値を取得する

GUIDEを使用してGUIを作成するとしましょう。作成機能では、私は別の関数を呼び出す

MyGUI_OpeningFcn(hObject, eventdata, handles, varargin) 

SamplingRate_Callback(handles.SamplingRate, eventdata, handles) 

handles.a = 1; 
handles.b = 2; 
handles.c = 3; 

handles ST、

SamplingRate_Callbackは、いくつかの変数を設定します
function SamplingRate_Callback(hObject, eventdata, handles) 

として定義しますru30は、SamplingRate_Callback関数内で正しく更新されます。私が午前問題は、私は

function handles = SamplingRate_Callback(hObject, eventdata, handles), 

に機能を変更しない限り、私は呼び出し元の関数、MyGUI_OpeningFcnにデータを返すことができないということです。私はguidata(gcf, handles)guidata(hObject, handles)を使用しようとしましたが、いずれも動作しません。

この問題を解決することはできますか?

また、guidata(gcf, handles)guidata(hObject, handles)のどちらを使用するかはわかりません。

ありがとうございました!

答えて

0

の機能でSamplingRate_Callbackとはどのように電話しますか?この場合、戻り値を定義していないと思われます。戻り値はvaluesです。

修正プログラムは、このようなものになるだろう:

function [handles] = SamplingRate_Callback(hObject, eventdata, handles) 

そしてあなたは、このようなMyGUI_OpeningFcnからSamplingRate_Callbackを呼び出します。あなたはデータで何を意味するかに応じて、

handles = SamplingRate_Callback(handles.SamplingRate, eventdata, handles); 
+0

こんにちは、あなたの答えに感謝します。はい、それはうまくいくでしょう。私はなぜSamplingRate_CallbackがGUI要素を使って直接呼び出されたのか理解できないと思いますが、単純にguidataを使って永続ハンドル値を保存できますが、同じ関数を別の方法で呼び出すとguidataは機能しません。それは理にかなっていますか?なぜなのかご存知ですか? – user1340654

0

、あなたはgetappdataをを使用することができますsetappdataオブジェクトを保存したり、オブジェクト自体からデータをロードしたりするために使用します(通常、データをプロットする軸を使用します)。

関連する問題