我想在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);
答案 0 :(得分:2)
您需要使用guidata
来检索GUIDE在回调之间自动传递的handles
结构。您还需要figure
的句柄来检索guidata
,我们将findall
与Tag
属性结合使用(在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