0

正如在这个问题中或多或少地问过的那样:https ://stackoverflow.com/questions/14397729/working-with-multiple-guis-in-matlab

我想要输出参数并等待 gui 完成。

我现在使用waitfor,但输出总是只有一个句柄

handle = uiConfigureCalibration('uiMain', handles.figure1);
waitfor(handle);
display(handle);

然而,输出函数uiConfigureCalibration传递了几个参数:

function varargout = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
   varargout{2} = handles.files.calibration;
   varargout{3} = handles.calibration;
end 

有没有机会在调用函数中以某种方式获取这些参数?

4

1 回答 1

1

你必须做

[output,FilesCalibration,Calibration] = uiConfigureCalibration('uiMain', handles.figure1);

获取额外的输出——你只在你的函数调用中要求一个输出,所以你总是得到一个输出。但是,如果您输出单个参数,这将失败。

由于输出的数量是可变的,我认为最好返回包含所有输出的结构:

function output = uiConfigureCalibration_OutputFcn(hObject, eventdata, handles) 
output.output = handles.output;
if isfieldRecursive(handles, 'handles.files.calibration')
   output.files.calibration = handles.files.calibration;
   output.calibration = handles.calibration;
end

现在函数本质上返回句柄结构的子集,包含 1 或 3 个字段,具体取决于句柄的结构

于 2013-01-18T15:04:17.210 回答