我有一个名为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()中使用“全局编号”吗?
答案 0 :(得分:0)
你正在解决这个问题,我通常会这样做。对我来说,GUI是主要对象,我定义了我的按钮回调,以便调用外部脚本和函数。
您希望运行单独的脚本或函数,然后修改GUI。这也很好!您只需要GUI的句柄,例如,可以使用gcf
(假设GUI是当前活动的图形窗口)。但是,您的setNumberFcn
是local 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);