如何从单独的 m 文件访问 MATLAB GUI 函数 - matlab
how to access MATLAB GUI functions from a separate m file - matlab
我有一个名为 main() 的函数。在这个 'main' 中,我调用了另一个函数 A()。
我有一个 GUIde,其中有一个变量 'number'。
如何从 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() 中使用 'Global number' 吗?
你解决问题的方式与我通常做的相反。对我来说,GUI 是主要对象,我定义了我的按钮回调等来调用外部脚本和函数。
您想 运行 一个单独的脚本或函数,然后修改 GUI。这个也不错!您所需要的只是 GUI 的句柄,例如,您可以使用 gcf
获得它(假设 GUI 是当前活动的图形 window)。然而,你的 setNumberFcn
是一个 local function (or possibly a 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
我的问题已经解决了。
只需要在所有必要的函数中定义全局变量 'number' 。现在我可以轻松地在 GUI 或 A() 函数中更改 'number' 的值。
无需 'set' 功能。
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);
我有一个名为 main() 的函数。在这个 'main' 中,我调用了另一个函数 A()。 我有一个 GUIde,其中有一个变量 'number'。 如何从 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() 中使用 'Global number' 吗?
你解决问题的方式与我通常做的相反。对我来说,GUI 是主要对象,我定义了我的按钮回调等来调用外部脚本和函数。
您想 运行 一个单独的脚本或函数,然后修改 GUI。这个也不错!您所需要的只是 GUI 的句柄,例如,您可以使用 gcf
获得它(假设 GUI 是当前活动的图形 window)。然而,你的 setNumberFcn
是一个 local function (or possibly a 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
我的问题已经解决了。 只需要在所有必要的函数中定义全局变量 'number' 。现在我可以轻松地在 GUI 或 A() 函数中更改 'number' 的值。 无需 'set' 功能。
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);