我使用GUIDE创建了一个matlab GUI。
我创建了几个带有静态文本框的面板。一旦我按下“更新”按钮,我想给所有方框写值。
例如,我想写一个标签为AV1的盒子,文本框位于面板“uipanel2”内。两种方式都会出错:
set(handles.AV1,'String','hi');
上面的代码不起作用,因为它说该字段不存在。这是有道理的,因为我需要先访问面板。
所以下面我访问该小组,但我该如何找到它的孩子?
set(handles.uipanel2.AV1,'String','hi');
此代码给出以下错误:尝试引用非结构数组的字段。
答案 0 :(得分:3)
Children
是一个字段,所以如果你想要孩子,你可以尝试get(handles.uipanel2,'Children')
,它会给你一个带有孩子句柄的数组。它看起来像数字,就像uipanel2
的句柄看起来像一个数字一样。
以下是一个例子:
function testGUI
fig = figure(1);
panel = uipanel(fig);
tbox = uicontrol('Style','text','String','hello','parent',panel);
ch = get(panel,'Children')
get(ch,'Type')
get(ch,'String')
end
它显示了如何使用Children
获取面板对象的ch = get(panel,'Children')
,该对象应该向控制台打印一些内容,如下所示:
ch =
182.0011
为了告诉你这个ch
实际上是作为面板子项的静态文本框的句柄,我已经打印出ch
的类型和字符串到控制台应该如下:
ans =
uicontrol
ans =
hello
这是一个如何在按下按钮时让文本框中的字符串更新的示例:
function testGUI
fig = figure(1);
panel = uipanel(fig);
tbox = uicontrol('Style','text','String','hello','parent',panel);
button = uicontrol('Style','PushButton','String','push me',...
'Position',[100 100 50 25]);
set(button,'Callback',@mycallback)
function mycallback(src,eventdata)
set(tbox,'String','updated')
end
end