0

我是 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,但我不知道为什么会收到此错误。谁能帮我?

4

1 回答 1

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 中定义。

于 2013-05-31T22:55:17.610 回答