【问题标题】:How to access MATLAB GUI handles from inside a function如何从函数内部访问 MATLAB GUI 句柄
【发布时间】:2013-12-04 19:13:06
【问题描述】:

前提

我正在使用 GUIDE 创建一个 MATLAB GUI。 我有大约 10 个“编辑文本”框和大约 10 个“静态文本”框。 该程序的目的是从“编辑文本”框中取出数据,进行一堆计算,然后将结果输出到“静态文本”框。

问题

我的问题是一个函数 refresh_data() 需要访问 20 个对象中每个对象的句柄。所以现在我将所有句柄传递给函数,看起来像这样......

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

函数refresh_data 包含在单独的.m 文件中。有没有办法一次通过我的所有句柄?

请随意提出其他解决方法,我对 MATLAB GUI 比较陌生。

【问题讨论】:

  • 为什么不完整地传递handles(单个参数)?
  • handles 是一个结构,因此您可以传递包含所有单个字段的整个结构

标签: matlab user-interface matlab-guide


【解决方案1】:

按照 cmets 的建议,您可以一次传递整个句柄结构:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多