我有一个名为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);