使用 "handles" 在我自己的 GUIDE GUI 函数中打印文本

Print text in my own function in GUIDE GUI using "handles"

我想在 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);

您需要使用 guidata 来检索 GUIDE 在回调之间自动传递的 handles 结构。您还需要 figure 的句柄来检索 guidata,我们将结合使用 findallTag 属性(下面我已经以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