【问题标题】:callback function in gui does not know handlesgui中的回调函数不知道句柄
【发布时间】:2013-01-11 00:05:54
【问题描述】:

我尝试在我的 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 user-interface callback


    【解决方案1】:

    我通常不会使用您正在使用的大多数功能,我不是 Matlab GUI 人。但是,我认为这会奏效。

    1. 改变

      function z_WaitBarUpdate(value, maxValue) 
      

      function z_WaitBarUpdate(value, maxValue, handles)
      
    2. 改变

      readCalibrationImage( handles , @z_WaitBarUpdate); 
      

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

    首先,这定义了更新函数的第三个输入,以处理您丢失的输入。如果handles 未传入,则该函数将无法使用它。然后,在创建handles 结构之后,这将创建一个匿名函数,其目的是定义第三个输入,同时允许稍后在实际调用该函数时定义前两个输入。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    相关资源
    最近更新 更多