在MATLAB中在函数和回调之间传递数据

时间:2013-05-31 20:57:04

标签: matlab-guide

我是MATLAB GUI构建的新手,我正在尝试学习如何在两个GUI之间传递数据。 我的问题是如何从子GUI中调用主GUI中的函数。

例如:

在主GUI中,我从各自的回调中获取两个文本框中的值:

handles.A= str2double(get(handles.textbox1,'string'));  

guidata(hObject,handles)

handles.B = str2double(get(handles.textbox2,'string'));   

guidata(hObject, handles)

然后除了上面的内容之外,我还有第三个函数可以添加:

function addition(handles)    

C= handles.A + handles.B

然而,第三个功能是通过按钮按钮从子GUI访问,如下所示:

function pushbutton1_Callback(hObject, eventdata, handles)   

main_gui('addition');

我得到的错误是C = handles.A + handles.B行中没有足够的输入参数,但我不知道为什么我会收到此错误。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你在没有任何输入参数的情况下调用addition。在GUI之间传递数据的一种方法是将handles.ahandles.b作为输入参数传递给子GUI,然后将它们用作addition的输入参数。

在子GUI打开功能(subGUI_OpeningFCN)的顶部添加以下行:

handles.a = varargin{1};
handles.b = varargin{2};

将子GUI功能pushbutton1_Callback更改为:

main_gui('addition', handles.a, handles.b);

main_gui更改addition以接受两个输入参数:

addition(handles.a,handles.b)

然后,同样在main_gui中,像这样呼叫subGUI

subGUI(handles.a,handles.b);

请注意,addition可以在单独的m文件中定义,而不是在主GUI中定义。