我有两个gui的主要是gui,另一个是sub gui。在主要gui的开放功能我使用open(' subgui.fig');打开子gui。主要由5个编辑框和一个按钮组成。按下按钮后,这5个编辑框中的数据应该传递给子gui,主gui应该关闭。请任何人帮我这样做。
答案 0 :(得分:1)
让我们举一个one editbox and one pusbutton in main GUI
和one editbox in sub GUI
的简单案例,它将从主GUI中的编辑框中获取价值。可以根据需要轻松地将其扩展到尽可能多的编辑框。数据存储和检索的基本媒介是全局结构data1
。
为了理解代码,让我们采取以下假设 -
main_gui.m
,因此具有关联
来自GUIDE的main_gui.fig
。主GUI的图形标记为main_gui_figure
。sub_gui.m
,因此具有关联的sub_gui.fig
来自GUIDE。在main_gui.m中进行编辑
在editbox的回调中,添加 -
global data1;
%%// Field in data1 to store the string in editbox from main GUI
data1.main_gui.edit1val = get(hObject,'String');
在按钮的回调中,在它返回之前添加它 -
global data1;
sub_gui;
delete(handles.main_gui_figure);
在sub_gui.m中进行编辑
在sub_gui_OpeningFcn中,添加 -
global data1;
set(handles.edit1,'String',data1.main_gui.edit1val);%%// Tag of editbox in sub-gui is edit1
希望这对你有用!请告诉我们!
答案 1 :(得分:0)
实现这一目标可能有多种方法。但其中一种方法是定义一个带有两个输入参数的函数:1)目标图形的句柄和2)源图形中的任何数据。
以下的伪代码并不一定在MATLAB中运行,但它给出了基本的想法:
function takeAction(uihdls, data)
set(0, 'CurrentFigure', uihdls.fig); % uihdls.fig is the handle of the destination figure.
set(gcf, 'CurrentAxes', uihdls.aexs1); % axes1 is inside fig
plot(data.x, data.y); % Do some plotting
set(uihdls.editBox, 'String', data.string); % Modify some property of a control inside fig.
key_Callback(uihdls.fig, data.keyData); % Call a callback function of the destination figure
return
只要准备就绪,源图可以调用此函数。
答案 2 :(得分:0)
更多的工作 - 但我认为这是值得的。
我通常会使用MVC pattern。实际上,它意味着编写一个控制器对象,将消息传递到必需的字段。