Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中从一个gui到另一个gui的结果获取_Matlab_User Interface - Fatal编程技术网

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

在matlab中从一个gui到另一个gui的结果获取,matlab,user-interface,Matlab,User Interface,我有两个GUI,一个是main,另一个是subGUI。我希望主gui的结果显示在子gui的文本框中 我通过添加以下内容将主gui连接到子gui: openfig subgui.fig 我知道这不行,我是matlab新手。要在主gui中显示结果,我有: set(handles.edit1,'String',f); f表示我希望在另一个gui中显示的结果。梦想-代码行 openfig subgui.fig 将只打开GUI/图,而不是以可以使用的方式启动GUI。当打开它时,将显示GUI及其所有控

我有两个
GUI
,一个是main,另一个是sub
GUI
。我希望主gui的结果显示在子
gui
的文本框中

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

openfig subgui.fig
我知道这不行,我是matlab新手。要在主gui中显示结果,我有:

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

f
表示我希望在另一个gui中显示的结果。

梦想-代码行

openfig subgui.fig
将只打开GUI/图,而不是以可以使用的方式启动GUI。当打开它时,将显示GUI及其所有控件,一旦您尝试使用它,就会出现错误(导致
尝试引用非结构数组的字段。
)。相反,按名称启动GUI,如下所示

subgui
这将足以以工作方式启动子gui

现在,为了将信息从一个GUI传递到另一个GUI,您可以尝试以下方法。假设您正在使用GUIDE创建主GUI和子GUI(这似乎有效,因为您有GUI图形),请打开每个GUI图形的属性检查器,并将
handleviability
属性设置为
on
。同时,为每个GUI分配
标记
,可能为主GUI分配
MainGui
,为子GUI分配
SubGui

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

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(因此,
hSubGui
是非空的),那么我们就可以得到它的句柄结构,这样我们就可以用主GUI中的数据更新它的编辑文本字段。

幻想-代码行

openfig subgui.fig
将只打开GUI/图,而不是以可以使用的方式启动GUI。当打开它时,将显示GUI及其所有控件,一旦您尝试使用它,就会出现错误(导致
尝试引用非结构数组的字段。
)。相反,按名称启动GUI,如下所示

subgui
这将足以以工作方式启动子gui

现在,为了将信息从一个GUI传递到另一个GUI,您可以尝试以下方法。假设您正在使用GUIDE创建主GUI和子GUI(这似乎有效,因为您有GUI图形),请打开每个GUI图形的属性检查器,并将
handleviability
属性设置为
on
。同时,为每个GUI分配
标记
,可能为主GUI分配
MainGui
,为子GUI分配
SubGui

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

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(因此
hSubGui
是非空的),那么我们将得到它的句柄结构,这样我们就可以用主GUI中的数据更新它的编辑文本字段。

您需要一个全局变量

假设我们有

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

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

global my_data;
my_data.main.main_edit = get(hObject, ‘String’);
global my_data;
set(handles.sub_edit, ‘String’, my_data.main.main_edit);
第二步。在按钮的回调中,在返回之前添加以下内容:

global my_data;
sub;
delete(handles.main_figure);
在sub.m中,在打开功能中添加以下内容:

global my_data;
my_data.main.main_edit = get(hObject, ‘String’);
global my_data;
set(handles.sub_edit, ‘String’, my_data.main.main_edit);
让我知道它是否适合你


另外,您可以查看MathWorks工程师发布的一些很棒的视频,这里有一个视频可以帮助您:

您需要一个全局变量

假设我们有

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

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

global my_data;
my_data.main.main_edit = get(hObject, ‘String’);
global my_data;
set(handles.sub_edit, ‘String’, my_data.main.main_edit);
第二步。在按钮的回调中,在返回之前添加以下内容:

global my_data;
sub;
delete(handles.main_figure);
在sub.m中,在打开功能中添加以下内容:

global my_data;
my_data.main.main_edit = get(hObject, ‘String’);
global my_data;
set(handles.sub_edit, ‘String’, my_data.main.main_edit);
让我知道它是否适合你


此外,您可以查看MathWorks工程师发布的一些很棒的视频,这里有一个视频可以帮助您:

我没有按钮,是否可以从主gui调用输出,并将其显示到子gui,或者我应该创建一个按钮以将我指向子gui?按钮(在上面的代码中)这只是一个例子。但是,是否启动子GUI取决于您自己。(虽然我不明白你所说的从主gui调用输出是什么意思。)你打算如何调用子gui?我没有按钮,如果我可以从主gui调用输出并将其显示到子gui,或者我应该创建一个按钮来引导我到子gui?按钮(在上面的代码中)这只是一个例子。但是,是否启动子GUI取决于您自己。(虽然我不明白你所说的从主gui调用输出是什么意思。)你打算如何调用子gui?我没有按钮,如果我可以从主gui调用输出并将其显示到子gui,是否可以,或者我应该创建一个按钮来指示我