如何从基础工作区访问嵌套函数中的gui对象

时间:2017-09-26 22:13:06

标签: matlab matlab-gui

我认为我的问题是我不知道如何在我的按钮回调函数中访问guiel.hAX(3)属性,我放kiddies = get(guiel.hAX(3),'Children'); 我收到了错误:

Undefined variable "guiel" or class "guiel.hAX".

Error in showTF/callback_update_model (line 508)
    kiddies = get(guiel.hAX(3),'Children');

我的按钮回调嵌套函数:

function callback_update_model(~,~)
    vars.dropheight = str2num(get(edit(2),'String'));
    vars.armradius = str2num(get(edit(1),'String'));
    kiddies = get(guiel.hAX(3),'Children');
    delete(kiddies); 
    clear kiddies;
    set(guiel.tfPanel,'Visible','off','Position',cnst.tfPanelpos);
    set(guiel.hAX(1),'Position',cnst.axpos1);

    if ishandle(guiel.hAX(2)) 
    set(guiel.hAX(2),'Position',cnst.axpos2);
    end
    eval(get(guiel.hPB(4),'Callback'));
end

我在其他mfile中初始化变量

guiel.hAX(1) = -1;
guiel.hAX(2) = -1;
guiel.hAX(3) = -1;
guiel.tfPanel = -1;
...
    guiel.hAX(3) = axes('Parent',guiel.tfPanel,'Color',cnst.OFFWHITE,'Layer',...
                'top','Xlim',[0 1],'YLim',[0 1],'GridLineStyle','none','Units','Normalized',...
                'XTick',[],'YTick',[],'Box','off','Visible','off','Position',cnst.axpos3);

1 个答案:

答案 0 :(得分:1)

要使数据在回调中可用,可以将数据存储在图中的UserData属性中。如果您的图形句柄是h_fig,则可以使用如下代码将数据存储在图形中:

set(h_fig, 'UserData', guiel)

在回调中,您可以使用gcbo函数获取图形的句柄,然后提取用户数据,使用如下代码:

[~, h_fig] = gcbo;
guiel = get(h_fig, 'UserData')