我有两个GUI
,1个主要,另一个是GUI
。我想让主gui的结果显示在子GUI
的文本框中。
我通过添加以下内容将我的主gui连接到子gui:
openfig subgui.fig
我知道这不会,我是matlab的新手。要在主gui中显示结果:
set(handles.edit1,'String',f);
f
代表我希望在其他gui中显示的结果。
答案 0 :(得分:4)
您需要一个全局变量。
我们说我们有
在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.
的效果)。相反,按名称
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中的数据更新其编辑文本字段。