我尝试在我的gui中实现更新等待栏的回退功能。我将函数句柄传递给加载图像的函数。回退本身有效,但我没有得到等待栏的句柄。
function z_WaitBarUpdate(value, maxValue)
handles=guidata(handles.output); % <-- fails because handles is unknown
if ishandle(handles.waitbar.handle)
waitbar(value/maxValue,handles.waitbar.handle,handles.waitbar.text);
end
我使用带有此代码的句柄调用该函数
hWait = waitbar(0,'1','Name','Reading calibration file ...');
cleanupWaitbar = onCleanup( @()( delete( hWait )));
handles.waitbar.handle = hWait;
handles.waitbar.text = 'reading subset of stack ...';
readCalibrationImage( handles , @z_WaitBarUpdate);
知道如何在我的回调中访问waitbar句柄吗?
答案 0 :(得分:1)
我没有使用大多数你正在使用的功能,我不是一个Matlab GUI人。但是,我认为这会奏效。
更改
function z_WaitBarUpdate(value, maxValue)
到
function z_WaitBarUpdate(value, maxValue, handles)
更改
readCalibrationImage( handles , @z_WaitBarUpdate);
到
readCalibrationImage( handles , @(value, maxValue) z_WaitBarUpdate(value, maxValue, handles));
首先,这定义了更新函数的第三个输入,以处理您缺少的输入。如果未传入handles
,则该函数将无法使用它。然后,在创建handles
结构之后,这将创建一个匿名函数,目的是定义第三个输入,同时允许在实际调用函数后稍后定义前两个输入。