写入面板中的静态文本框 - MATLAB

时间:2013-07-19 16:55:43

标签: matlab static panel children matlab-guide

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

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

例如,我想写一个标签为AV1的盒子,文本框位于面板“uipanel2”内。

两种方式都会出错:

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

所以下面我访问该小组,但我该如何找到它的孩子?

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

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

1 个答案:

答案 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