如何从单独的m文件访问MATLAB GUI函数 - matlab

时间:2016-07-15 07:40:42

标签: matlab user-interface matlab-guide

我有一个名为main()的函数。在这个'主'中我调用另一个函数A()。 我有一个GUIde,并在此有一个变量'数字'。 如何从A()访问'number'或从A()更改'number'的值?

1-以下代码不起作用。

main(handles)
  %some code
  A(handles);

  function A(handles)
    set(handles.number,0);
  end
end

2-而且这个也不起作用。

main(handles)
  %some code
  A(handles);

  function A(handles)
    handles.setNumberFnc(5);
  end
end


%%%%%in GUI i have this function.

function setNumberFnc(n)
  handles.number = n;
  guidata(hObject, handles);

我知道这个函数没有'hObject'我不知道该怎么办?

3-我可以在GUI和A()中使用“全局编号”吗?

2 个答案:

答案 0 :(得分:0)

你正在解决这个问题,我通常会这样做。对我来说,GUI是主要对象,我定义了我的按钮回调,以便调用外部脚本和函数。

您希望运行单独的脚本或函数,然后修改GUI。这也很好!您只需要GUI的句柄,例如,可以使用gcf(假设GUI是当前活动的图形窗口)。但是,您的setNumberFcnlocal function(或可能是nested function,这几乎是相同的事情),您无法从其他脚本或函数文件中调用它。相反,您必须以

的方式将其放入main.m文件中
function main()

  fig_handle = gcf;
  numfield_handle = findobj(gcf, 'NumFieldTagThatYouDefinedInGUIDE');

  function setNumberFcn(numfield_handle, number)
      set(numfield_handle, 'String', num2str(number))
  end

end

答案 1 :(得分:0)

我解决了我的问题。 只有有必要定义全局变量'数字'在所有必要的功能。现在很容易我可以改变'数字'在GUI或A()函数中。 没有必要设置'功能

main()
  %some code
  A();

  function A()
    global number;
    disp(number);
    number = 5;
  end
end

并在GUIde中:

function B_Callback(hObject, ~, handles)
global number;
number = 2;
guidata(hObject, handles);