使用 "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
,我们将结合使用 findall
和 Tag
属性(下面我已经以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
我想在 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
,我们将结合使用 findall
和 Tag
属性(下面我已经以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