在gui的matlab之间传递数据

时间:2014-03-20 06:55:34

标签: matlab user-interface matlab-guide data-exchange

我有两个gui的主要是gui,另一个是sub gui。在主要gui的开放功能我使用open(' subgui.fig');打开子gui。主要由5个编辑框和一个按钮组成。按下按钮后,这5个编辑框中的数据应该传递给子gui,主gui应该关闭。请任何人帮我这样做。

3 个答案:

答案 0 :(得分:1)

让我们举一个one editbox and one pusbutton in main GUIone editbox in sub GUI的简单案例,它将从主GUI中的编辑框中获取价值。可以根据需要轻松地将其扩展到尽可能多的编辑框。数据存储和检索的基本媒介是全局结构data1

为了理解代码,让我们采取以下假设 -

  • 主GUI名称为main_gui.m,因此具有关联 来自GUIDE的main_gui.fig。主GUI的图形标记为main_gui_figure
  • 子GUI名称为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。实际上,它意味着编写一个控制器对象,将消息传递到必需的字段。