私は3つのGUIをMATLABに持っています。それぞれのタグは'P0'
,'P1'
,'P2'
です。 3つのGUIすべてのハンドルを構造体に配置し、3つのGUIのいずれかからこの構造体にアクセスしてその中の値を更新できるようにしたいと思います。これを達成する最良の方法は何ですか?GUIのハンドルの構造MATLAB
1
A
答えて
5
これを行う方法にはいくつかのオプションがあります。 1つの方法は、ルートグラフィックスオブジェクトをsetappdata
とgetappdata
と一緒に使用して値を格納および取得することです。
fig0 = findall(0, 'tag', 'P0');
fig1 = findall(0, 'tag', 'P1');
fig2 = findall(0, 'tag', 'P2');
% Combine the GUIdata into a single struct
handles.P0 = guidata(fig0);
handles.P1 = guidata(fig1);
handles.P2 = guidata(fig2);
% Store this struct in the root object where ALL GUIs can access it
setappdata(0, 'myappdata', handles);
次に、あなたのコールバックの中から、あなたは、単にこの構造体を取得し、直接
function mycallback(hObject, evnt, ~)
% Ignore the handles that is passed in and use your own
handles = getappdata(0, 'myappdata');
% Now if you modify it, you MUST save it again
handles.P0.value = 1;
setappdata(0, 'myappdata', handles)
end
を、それを使用したい別のオプションは、あなたの値を格納するためにhandle
classを使用するようにして、あなたが参照を格納することができますです各GUIのhandles
構造体内のこのハンドルクラスにこの構造体を変更すると、変更はすべてのGUIに反映されます。
structobj
使用することですこれを行う簡単な方法(免責事項:私は、開発者午前)handle
オブジェクトに任意のstruct
を変換します。
% Create an object that looks like a struct but is a handle class and fill it with the
% handles struct from each GUI
handles = structobj(guidata(fig0));
update(handles, guidata(fig1));
update(handles, guidata(fig2));
% Now store this in the guidata of each figure
guidata([fig0, fig1, fig2], handles)
我々は数字のguidata
内のものを格納しているので、それは自動的に標準handles
入力引数を経由して、あなたのコールバックに渡されます。だから今、あなたのコールバックは次のようになります。
function mycallback(hObject, evnt, handles)
% Access the data you had stored
old_thing = handles.your_thing;
% Update the value (changes will propagate across ALL GUIs)
handles.your_thing = 2;
end
このアプローチの利点は、あなたが同時に実行している3つのGUIの複数のインスタンスを持つことができ、データが互いに干渉しないであろうということです。
+0
ありがとう – chsafouane
関連する問題
- 1. ハンドル構造の変更後にMATLAB GUIがオブジェクトを「忘れる」
- 2. Matlab GUI:ハンドル構造を更新するには?
- 3. MATLAB GUIの 'ハンドル'構造内の変数は、プッシュボタンコールバックで自動的にゼロになります
- 4. はMATLABのGUI構造を扱います
- 5. MATLAB - 構造
- 6. 構造化Haskell(gtk2hs)GUIの
- 7. Java SwingのGUIコード構造
- 8. Matlab構造体のベクトル構造体への変換
- 9. Python GUIクラス構造の呼び出し
- 10. PyQt5 GUI構造の助言が必要
- 11. Pythonの構造体内にmatlab構造体をインポートする
- 12. MATLAB構造体変換エラー
- 13. MATLAB構造体配列は
- 14. matlab:構造データとマルチレベルインデックス
- 15. matlabのセルから構造へのセル
- 16. Matlabの構造体の操作
- 17. Matlabの構造体へのアタッチ
- 18. Matlab guiのエラーメッセージ
- 19. MatlabのGUIエラー
- 20. MatlabのGUIエラー
- 21. の反復印刷MATLAB構造体
- 22. 構造体matlabのピクセル用テンソル
- 23. MATLAB:構造体の保存値
- 24. MATLAB:マージ関数ハンドル
- 25. MATLAB関数ハンドルと
- 26. Matlab内の別の構造体内の構造体のサイズ(R2010a 64ビットLinux)
- 27. Matlabの:私は5つのMatlabの構造体を持つ複数の構造体に
- 28. MatlabのGUIのuigetfile
- 29. 構造化グリッドと任意の点(非構造化グリッド)間のMatlab補間
- 30. MATLAB GUIのドキュメントファイル(ユーザマニュアル)
'getappdata'と' setappdata'を見ましたか? – Matt
データを格納する 'handle'クラスを作成し、' guidata'でハンドルを保存し、いずれかのGUIから変更することができます – Suever