簡體   English   中英

如何從函數內部訪問MATLAB GUI句柄

[英]How to access MATLAB GUI handles from inside a function

前提

我正在使用GUIDE創建MATLAB GUI。 我大約有10個“編輯文本”框和大約10個“靜態文本”框。 該程序的目的是從“編輯文本”框中獲取數據,執行一堆計算,然后將結果輸出到“靜態文本”框中。

問題

我的問題是,有一個函數refresh_data()需要訪問20個對象中的每個對象的句柄。 所以現在我將所有句柄傳遞給函數,看起來像這樣……

refresh_data(handles.edittext1, handles.edittext2, ... handles.statictext10)

函數refresh_data包含在單獨的.m文件中。 有沒有辦法一次傳遞我所有的手柄?

隨意提出其他解決方法,我對MATLAB GUI還是很陌生。

如注釋所建議,您可以一次傳遞整個handle結構:

function refresh_data(handles)
  temp = get(handles.edittext1, 'String')
  % convert temp to number, process, convert back to string
  set(handles.statictext1, 'String', temp)
end

由於您要進行大量此類操作,因此可以使用Matlab的動態字段名稱進行循環:

for k = 1:20
    box_to_get = ['edittext' k];
    box_to_set = ['statictext' k];
    temp = get(handles.(box_to_get), 'String');
    % processing
    set(handles.(box_to_set), 'String', temp);
end

有關更多信息,請參見http://www.mathworks.com/help/matlab/matlab_prog/generate-field-names-from-variables.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM