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



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

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()中使用"全局数字"吗?

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

您希望运行一个单独的脚本或函数,然后修改 GUI。这也很好!您所需要的只是 GUI 的句柄,例如,您可以使用gcf获得该句柄(假设 GUI 是当前活动的图形窗口)。但是,您的setNumberFcn是一个本地函数(或者可能是一个嵌套函数,这几乎是一回事),并且您不能从其他脚本或函数文件调用它。相反,您必须将其放入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

我已经解决了我的问题。只需要在所有必要的函数中全局定义变量"数字"。现在我可以轻松地在 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);

相关内容

  • 没有找到相关文章

最新更新