GUI中的回调函数不知道句柄



我尝试在我的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);

任何想法如何访问在我的回调酒吧句柄?

我通常不使用您正在使用的大多数功能,我不是Matlab GUI家伙。但是,我认为这是可行的。

    改变
  1. function z_WaitBarUpdate(value, maxValue) 
    

    function z_WaitBarUpdate(value, maxValue, handles)
    
  2. 改变
  3. readCalibrationImage( handles , @z_WaitBarUpdate); 
    

    readCalibrationImage( handles , @(value, maxValue) z_WaitBarUpdate(value, maxValue, handles));
    

首先,它定义了更新函数的第三个输入,以处理您缺少的输入。如果没有传递handles,那么它将无法用于函数。然后,在创建handles结构之后,这将创建一个匿名函数,目的是定义第三个输入,同时允许在稍后实际调用该函数时定义前两个输入。

最新更新