如何将句柄从一个函数传递到另一个函数

时间:2016-10-05 04:27:14

标签: matlab

当我运行我的代码时,会有两个数字,一个是名字“图1”,另一个是“测试”。我要做的是让imshow在'test'上显示而不是'Figure 1'。

import Stomp from 'stompjs';

我退出循环后会出现此错误

  

使用imshow> validateParent时出错(第352行)   HAX必须是有效的轴句柄。   imshow中的错误(第257行)         validateParent(specific_args.Parent)   主要错误(第297行)           imshow(图像, '父',handles.axes1);

     
    

  

* ps:我实际上并不知道为什么'图1'会存在。

3 个答案:

答案 0 :(得分:1)

在检查你的问题时,我不确定'guihandles'是否覆盖轴柄;在一个例子中重新创建你没有的问题。另外,保存手柄时轴是否存在?

请尝试以下改编代码是否有效。

himg=GUI('name','test','NumberTitle','off'); %where GUI was designed using GUIDE
handles = guihandles(himg);
handles.axis1 = [];
while ishandle(himg)
    if sum(depthMetaData.IsSkeletonTracked)>0
        util_skeletonViewer(skeletonJoints,image,1,handles); %refer code below
    else
        if ~isempty(handles.axes1)
            imshow(image,'Parent',handles.axes1);
        else
            figure(himg)
            imshow(image,'Parent',gca);
            handles.axes1 = gca;
        end
    end
end

function [] = util_skeletonViewer(skeleton, image, nSkeleton,handles)
    if ~isempty(handles.axes1)
        imshow(image,'Parent',handles.axes1);
    else
        figure(himg)
        imshow(image,'Parent',gca);
        handles.axes1 = gca;
    end

答案 1 :(得分:0)

我也遇到了这个问题,所以我将描述我想出的快速解决方案。在一个您知道句柄正在按您期望的方式执行的函数中(在我的情况下,在OpeningFcn中),我会将这些句柄另存为应用程序数据:

setappdata(0,'handles',handles);

然后在该函数中,句柄不代表我要调用的任何轴:

handles = getappdata(0,'handles');

然后执行此操作,使我可以访问自己定义的轴,例如handles.axes1

答案 2 :(得分:0)

在参数更改后,我试图实现最终的图像时遇到相同的问题。就我而言,我使用了多个图形,并且想要在按钮之后的最后一个图形的轴上显示结果:

from collections import OrderedDict
dDict = OrderedDict(sorted(dDict.items(), key=lambda x: x[1]["state"]))

因此要使用我的回调函数显示图像,解决方案是:

ok_mask_button= uicontrol(handles.pan,'Style','pushbutton','Units', 'normal', 
'Position',[.55 .9 .08 .06],'FontSize',12,'FontWeight','bold', 
'String','Ok','Callback', @Mask_parameters);

我需要使用gca来指定要在当前轴上工作。