在matlab中将结果从一个gui获取到另一个gui

时间:2015-01-03 23:32:21

标签: matlab user-interface

我有两个GUI,1个主要,另一个是GUI。我想让主gui的结果显示在子GUI的文本框中。

我通过添加以下内容将我的主gui连接到子gui:

openfig subgui.fig

我知道这不会,我是matlab的新手。要在主gui中显示结果:

set(handles.edit1,'String',f);

f代表我希望在其他gui中显示的结果。

2 个答案:

答案 0 :(得分:4)

您需要一个全局变量。

我们说我们有

  • 一个名为main.m的主GUI(带有关联的main.fig),其中包含一个编辑框(main_edit)和一个按钮
  • 一个名为sub.m(带有关联的sub.fig)的子GUI,其中一个编辑框(sub_edit)将从主
  • 中的编辑框获取值

在main.m

第1步。在编辑框的回调中,添加以下内容:

global my_data;
my_data.main.main_edit = get(hObject, ‘String’);

第2步。在按钮的回调中,在返回之前添加以下内容:

global my_data;
sub;
delete(handles.main_figure);

在sub.m 中,在开场功能 sub_OpneningFcn 内添加以下内容:

global my_data;
set(handles.sub_edit, ‘String’, my_data.main.main_edit);

让我知道它是否适合你!

此外,您可以查看由MathWorks工程师发布的一些精彩视频,以下是一个可以帮助您的视频:http://www.mathworks.com/matlabcentral/fileexchange/8616-video--guide-advanced-techniques

答案 1 :(得分:1)

Reverie - 代码行

openfig subgui.fig

只会打开GUI / figure而不是以可以使用它的方式启动GUI。打开它时会显示带有所有控件的GUI,一旦你尝试使用它,你就会得到错误(Attempt to reference field of non-structure array.的效果)。相反,按名称

启动GUI
subgui

足以以工作方式启动子gui。

现在,为了将信息从一个GUI传递到另一个GUI,您可以尝试以下操作。假设您正在使用GUIDE创建主GUI和子GUI(这似乎是有效的,因为您有GUI的图形),打开属性检查器以获取每个GUI的图形并将HandleVisibility属性设置为{{1 }}。同时,为每个主用GUI分配on,为主GUI分配Tag,为子GUI分配MainGui

现在,您可以使用SubGui函数使用其标记查找其他GUI。那么假设我们从第一个GUI的按钮回调中启动子GUI,如

findobj

在上面我们使用function pushbutton1_Callback(hObject, eventdata, handles) % launch the sub GUI % NOTE - you may want code here to check to see if the GUI is already open before % launching it again subgui; % find the handle to the subgui hSubGui = findobj('Tag','SubGui'); if ~isempty(hSubGui) % get the handles structure of the sub GUI hSubGuiHandles = guidata(hSubGui); % get the data from the main GUI to pass to the sub GUI value = get(handles.edit1,'String'); % now update an equivalent edit text field in the other GUI set(hSubGuiHandles.edit1,'String',value); end 使用findobj属性查找我们感兴趣的GUI。如果我们找到了这个GUI(因此Tag非空),那么我们得到它的句柄结构,以便我们可以用主GUI中的数据更新其编辑文本字段。