ユーザーからの多数の入力を受け入れる GUI を (GUIDE ではなく) プログラムで作成しました。別のスクリプト (別の .m ファイル内) によって呼び出されます。GUI は 3 つの変数を返します。
[X Y Z] = MyGUIfunction(Arg1);
私の問題は、呼び出し元のスクリプトの実行が MyGUIfunction が完了する (そして変数を返す) 前に継続しているように見えることです。
MATLAB は次のエラー メッセージを返します。
Output argument "X" (and maybe others) not assigned during call to "etcetc\MyGUIfunction"
このエラー メッセージは真です。ユーザーが入力を終了して Figure を閉じるまで、XY と Z は設定されません。
XY と Z が決定される前に呼び出しスクリプトが継続しないようにするにはどうすればよいですか? uiwait() を試してみましたが、必要な動作を得ることができませんでした。
編集 2016-06-27
この機能:
function TempDelete_2()
%Would actually like to call this and WAIT for arguments to be returned
[rX rY rZ] = TempDelete_1();
%Matlab throws error here because rX, rY and rZ have NOT been set
disp(rX)
disp(rY)
disp(rZ)
end
この関数を呼び出します:
function [X Y Z] = TempDelete_1()
fH = 550;
fW = 900;
fL = 280;
fB = 280;
h_baseFig = figure('menubar','none','Position',[fL , fB, fW, fH],'name','Create Init','NumberTitle','off','ResizeFcn',@InitFigCB_SizeChangedFcn);
%Ok Button
f_okBut = uicontrol(h_baseFig,'style','pushbutton','position',[fW-90 10 80 35],'string','OK','Callback',@CB_OKdone);
function CB_OKdone(~,~,~)
X=1;
Y=2;
Z=3;
close(h_baseFig);
return
end
end