回调函数不更新句柄

时间:2013-01-11 10:12:11

标签: matlab user-interface callback

我正在使用根据此代码callback function in gui does not know handles

的回调函数

但是在使用回调函数调用的函数中,我无法更改句柄结构中的数据。

handles.waitbar.text = 'Reading images ...';
handles = readStackAndCreateFokusFunktion( ...
              handles , ...
              @(value, maxValue) ...
                    z_WaitBarUpdate(value, maxValue, handles));

在名为I的函数中修改句柄,但函数z_WaitBarUpdate中没有使用它。

function handles = readStackAndCreateFokusFunktion( handles, fcallback )

handles.waitbar.text = 'Extracting number of images in calibration file ...'; 
guidata(handles.output,handles);
% calls z_WaitBarUpdate as extpected, but the text is still 'Reading images ...'
fcallback(0, 100);

2 个答案:

答案 0 :(得分:0)

回调函数中句柄的简单更新解决了这个问题:

function z_WaitBarUpdate(value, maxValue, handles)
handles=guidata(handles.output); % <- added
if ishandle(handles.waitbar.handle)
    waitbar(value/maxValue,handles.waitbar.handle,handles.waitbar.text);
end

答案 1 :(得分:0)

你必须在最后一次更新句柄结构

guidata(handles.output);