使用"处理"

时间:2017-01-04 18:13:06

标签: matlab user-interface matlab-figure matlab-guide

我想在MATLAB中创建自己的函数,检查一些条件,但我不知道如何在那里发送handles。最后,我想在GUI中从这个其他函数中打印一些文本。我无法在此函数中直接使用handles.t1,因为无法从函数中访问它。我怎么能把它传递给那里?

function y = check(tab)
    if all(handles.tab == [1,1,1])
            set(handles.t1, 'String', 'good');
        else
            set(handles.t1, 'String', 'bad');
    end
end

修改

在评论和第一个回答后,我决定将整个回调放在我称之为函数的地方:

function A_Callback(hObject, eventdata, handles)
if handles.axesid ~= 12
    handles.axesid = mod(handles.axesid, handles.axesnum) + 1;
    ax = ['dna',int2str(handles.axesid)];
    axes(handles.(ax))
    matlabImage = imread('agora.jpg');
    image(matlabImage)
    axis off
    axis image
    ax1 = ['dt',int2str(handles.axesid)];
    axes(handles.(ax1))
    matlabImage2 = imread('tdol.jpg');
    image(matlabImage2)
    axis off
    axis image
    handles.T(end+1)=1;
    if length(handles.T)>2
        check(handles.T(1:3))
    end
end
guidata(hObject, handles);

1 个答案:

答案 0 :(得分:2)

您需要使用guidata来检索GUIDE在回调之间自动传递的handles结构。您还需要figure的句柄来检索guidata,我们将findallTag属性结合使用(在I&#39下方) ; ve使用mytag作为示例)来定位GUI图。

handles = guidata(findall(0, 'type', 'figure', 'tag', 'mytag'));

如果输入参数tab是图中图形对象的句柄,则只需在 上调用guidata即可获取handles结构

handles = guidata(tab);

<强>更新

在您的问题更新中,由于您从回调中直接调用check ,只需将必要的变量传递给您的函数,然后正常操作

function y = check(tab, htext)
    if all(tab == [1 1 1])
        set(htext, 'String', 'good')
    else
        set(htext, 'String', 'bad')
    end
end

然后从你的回调中

if length(handles.T) > 2
    check(handles.T(1:3), handles.t1);
end

或者,您可以将整个 handles结构传递给check函数

function check(handles)
    if all(handles.tab == [1 1 1])
        set(handles.t1, 'string', 'good')
    else
        set(handles.t1, 'String', 'bad')
    end
end

然后在你的回调中

if length(handles.T) > 2
    check(handles)
end