2013-07-19 22 views
0

我使用GUIDE創建了一個matlab GUI。寫入面板中的靜態文本框 - MATLAB

我創建了幾個帶有靜態文本框的面板。一旦我按下「更新」按鈕,我想將值寫入所有的框。

例如,我想寫一個標籤爲AV1的文本框,文本框在面板「uipanel2」內。

這兩種方法給出錯誤:

set(handles.AV1,'String','hi'); ,因爲它說的字段不存在上面的代碼不起作用。這是有道理的,因爲我需要先訪問面板。

所以下面我訪問面板,但我如何得到它的孩子?

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

此代碼提供了以下錯誤:試圖引用非結構陣列的場。

+0

,只是顯示handles.uipanel2給出了控制檯242.0026:S – msmf14

回答

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 

它顯示瞭如何獲得與ch = get(panel,'Children')面板對象,它應該打印的東西到控制檯看起來的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 
+0

謝謝你很全面的解釋。這真的很有幫助! – msmf14