我是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
行中没有足够的输入参数,但我不知道为什么我会收到此错误。任何人都可以帮助我吗?
答案 0 :(得分:0)
你在没有任何输入参数的情况下调用addition
。在GUI之间传递数据的一种方法是将handles.a
和handles.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中定义。