0

我使用 GUIDE 创建了一个 matlab GUI。

我创建了几个带有静态文本框的面板。按下“更新”按钮后,我想将值写入所有框。

例如,我想写一个带有标签 AV1 的框,文本框在面板“uipanel2”内。

两种方式都会出错:

set(handles.AV1,'String','hi'); 上面的代码不起作用,因为它说该字段不存在。这是有道理的,因为我需要先访问面板。

所以在下面我访问面板,但我如何访问它的孩子?

set(handles.uipanel2.AV1,'String','hi');

此代码给出以下错误:尝试引用非结构数组的字段。

4

1 回答 1

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
于 2013-07-19T20:59:19.813 回答