• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB 主GUI界面调用子GUI界面并输入输出参数,以及解决“字段不存在问题” ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

问题描述:需要在主GUI函数中调用子GUI界面,向子GUI传入参数parameter,参数在子GUI处理后传出,并传出变量flag,最后关闭子GUI界面。

 

子GUI界面如下:selfdefined_ISAR_Par.fig

1. 主GUI界面调用方法

[flagreture, parameter] = selfdefined_ISAR_Par(parameter);

输入参数:parameter

输出参数:flagreture,  parameter

调用方法和调用普通子函数形式一致

 

2. 子GUI界面处理

输入输出参数需要在子界面函数里面处理,才能被正确接收和传出。

每个GUI界面都有一个OpeningFcn函数,负责处理输入参数。

每个GUI界面都有一个OutputFcn函数,负责处理输出参数。

2.1 输入参数处理

在子GUI界面函数 function selfdefined_ISAR_Par_OpeningFcn(hObject, eventdata, handles, varargin)中加入

global parameter
parameter = varargin{1};

 注意:selfdefined_ISAR_Par是子界面名称;global是为了让输入参数能在其他控件函数中使用;parameter = varargin{1}意为第一个输入参数赋给parameter,同理,若有第二个输入参数,则应加入parameter2 = varargin{2}。

2.2 输出参数处理

在子GUI界面函数 function varargout = selfdefined_ISAR_Par_OutputFcn(hObject, eventdata, handles) 中加入

global flag parameter
varargout{1} = flag;
varargout{2} = parameter;

注意:在没有参数输出时,该函数的内容默认为 varargout{1} = handles.output,若要输出自定义参数,应屏蔽 varargout{1} = handles.output 这一行内容。

 

3. 关闭子GUI

在子界面输入参数完成后,需要点击确定退出该界面;或者不想输入参数,直接点击取消退出该界面。那么这个点击button按钮关闭GUI的代码这么写呢?

在button按钮的函数中加入以下代码

uiresume(handles.selfdefined_ISAR_Par);

在子GUI界面函数 function varargout = selfdefined_ISAR_Par_OutputFcn(hObject, eventdata, handles) 的最后加入一行代码

delete(handles.selfdefined_ISAR_Par);加完代码如下所示

global flag parameter
varargout{1} = flag;
varargout{2} = parameter;
delete(handles.selfdefined_ISAR_Par);

4. 错误:引用了不存在的字段 'selfdefined_ISAR_Par'

关闭GUI的时候很有可能遇到错误提示:引用了不存在的字段 'selfdefined_ISAR_Par',就是自己的子界面GUI竟然找不到?

这是什么原因呢?

在子界面函数 function selfdefined_ISAR_Par_OpeningFcn(hObject, eventdata, handles, varargin) 中设个断点,在主GUI界面调用子GUI界面,运行至断点。打开工作区的 handles。

正常情况下,handles中第一个字段(第一行)应该是子界面的名称(selfdefined_ISAR_Par),但是上图中的第一行并不是子界面名称,而是 fugure1,具体为什么这里不是子界面名称,笔者并不是很清楚,应该和新建GUI的过程有关。

那如何解决这个问题呢?

解决办法:把提示引用了不存在的字段 'selfdefined_ISAR_Par'的地方,都换成 figure1 即可。主要需要换的有

uiresume(handles.selfdefined_ISAR_Par) ——> uiresume(handles.figure1)

delete(handles.selfdefined_ISAR_Par) ——> delete(handles.figure1)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi中SendMessage使用说明(所有消息说明)good发布时间:2022-07-18
下一篇:
Delphi中代替WebBrowser控件的第三方控件发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap