如果是创建两个窗口的APP,则需要设计两个独立的APP,并实现两个APP之间的信息传递,示例如下,在Display Plot界面点击Options按钮,会弹出一个界面Options,可以选择图形的大小以及颜色,点击OK按钮,实现信息传递,Display Plot界面上图形的颜色和大小均会改变。

要实现上述功能的多界面APP,主要分为三步:1.将信息发送给对话框 2.将信息返回给主 App 3.关闭窗口时的管理任务

具体为以下几个步骤:

1.在主 和对话框 这两个独立的APP中分别放入相应的组件。涉及的组件主要有:坐标区,按钮,下拉框,编辑字段(数字) 这四个。

2.在对话框的界面,为 StartupFcn 回调定义输入参数,然后将代码添加到回调中。打开对话框 App 的代码视图。在编辑器选项卡上,点击 App 输入参数 。在 App 输入参数对话框中,为您的输入参数输入以逗号分隔的变量名称列表。将其中一个输入指定为存储主 App 对象的变量。然后点击确定

StartupFcn函数,是一个初始值设定函数,在 App 启动时、但在用户与 UI 进行交互之前执行。此函数称为 StartupFcn 回调,它非常适用于设置默认值、初始化变量或执行影响 App 初始状态的命令。例如,您可以使用 StartupFcn 回调来显示默认绘图或显示表中默认值的列表

将代码添加到 StartupFcn 回调中,以存储 mainapp 的值。

            % Store main app in property for CloseRequestFcn to useapp.CallingApp = mainapp;% Update UI with input valuesapp.EditField.Value = sz;app.DropDown.Value = c;

2.从主 App 的回调中调用对话框 App。打开主 App 的代码视图,然后为选项按钮添加一个回调函数。此回调禁用选项按钮,以防止用户打开多个对话框。接下来,它获取要传递给对话框的值,然后使用输入参数和输出参数调用对话框 App。输出参数是对话框 App 对象。

            % Disable Plot Options button while dialog is openapp.OptionsButton.Enable = 'off';% Open the options dialog and pass inputsapp.DialogApp = DialogAppExample(app, app.CurrentSize, app.CurrentColormap);

3.在主 App 中定义一个属性,以存储对话框 App。在主 App 保持打开的情况下,创建一个名为 DialogApp 的私有属性。在编辑器选项卡上选择属性 > 私有属性。然后,将 properties 模块中的属性名称更改为 DialogApp

properties (Access = private)DialogApp % Dialog box app
end

4.在主 App 中创建一个公共函数,以更新 UI。打开主 App 的代码视图,然后在编辑器选项卡上选择函数 > 公共函数

将默认函数名称更改为所需的名称,并为您希望从对话框传递给主 App 的每个选项添加输入参数。app 参数必须是第一个,因此请在此参数后指定其他参数。然后将代码添加到处理输入并更新主 App 的函数中。

function updateplot(app, sz, c)% Store inputs as propertiesapp.CurrentSize = sz;app.CurrentColormap = c;% Update plot Z = peaks(sz);surf(app.UIAxes,Z);colormap(app.UIAxes,c);% Re-enable the Plot Options buttonapp.OptionsButton.Enable = 'on';end

5.在对话框 App 中创建一个属性,以存储主 App。打开对话框 App 的代码视图,然后创建一个名为 CallingApp 的私有属性。在编辑器选项卡上选择属性 > 私有属性。然后,将 properties 模块中的属性名称更改为 CallingApp

properties (Access = private)CallingApp   % Main app objectend

6.从对话框 App 的回调中调用公共函数。在对话框 App 保持打开的情况下,为确定按钮添加一个回调函数。

在此回调中,将 CallingApp 属性和用户的选择传递给公共函数。然后调用 delete 函数以关闭对话框。

           % Call main app's public functionupdateplot(app.CallingApp, app.EditField.Value, app.DropDown.Value);% Delete the dialog boxdelete(app)

7.打开对话框 App 的代码视图,右键点击组件浏览器中的 app.UIFigure 对象,然后选择回调 > 添加 CloseRequestFcn 回调。然后添加重新启用主 App 中的按钮并关闭对话框 App 的代码。

function DialogAppCloseRequest(app,event)% Enable the Plot Options button in main appapp.CallingApp.OptionsButton.Enable = 'on';% Delete the dialog box delete(app)
end

8.打开主 App 的代码视图,右键点击组件浏览器中的 app.UIFigure 对象,然后选择回调 > 添加 CloseRequestFcn 回调。然后添加删除这两个 App 的代码。

function MainAppCloseRequest(app,event)% Delete both appsdelete(app.DialogApp)delete(app)
end

官网:https://ww2.mathworks.cn/help/matlab/creating_guis/creating-multiwindow-apps-in-app-designer.html

在matlab中使用APP designer创建多窗口APP相关推荐

  1. matlab函数画图创建gui,如何在MATLAB中的函数内创建GUI?

    build a GUI有多种方法,例如使用App Designer,GUIDE或以编程方式创建它(我将在下面说明此选项).了解GUI组件和 options available for sharing ...

  2. Matlab中结构体struct创建和使用

    在项目上遇见了调用api接口,接口返回的信息为struct,故探讨一下matlab的struct结构体 1.struct结构体创建 创建结构体数组有两种方式,分别为直接创建和使用struct函数 1. ...

  3. Matlab App Designer 【02】APP打包和安装

    APP发布和部署 一.安装到Matlab主界面APP 二.安装到Web端 解压MATLABWebAppServer.zip 安装MATLAB Runtime 设置路径 配置MATLABWebAppSe ...

  4. [MATLAB App Designer] 多窗口 App 中的交互(含数据传递)

    以下均为自己的学习总结,有不对的地方,或者有更便捷的方法欢迎指正. 关于这部分的官方文档如下: https://ww2.mathworks.cn/help/matlab/creating_guis/m ...

  5. 《MATLAB App Designer从入门到实践》随书源代码

    GUIDE已经被MATLAB抛弃了,你还不知道吗?App Designer才是发展的方向 目前市面上MATLAB GUI编程的书籍琳琅满目,但大多数是基于GUIDE开发的,MATLAB从2016年开始 ...

  6. MATLAB App Designer —— 手撕代码学习总结

    文章目录 MATLAB App Designer 官方文档 MATLAB App Designer 官方示例 (一) (1.1)csvread() 函数 (1.2)xlsread() 函数 (1.3) ...

  7. 汽车各档爬坡度曲线matlab,基于MATLAB App Designer的汽车爬坡能力建模与仿真

    1. 引言 汽车常常需要在不同区域的不同道路上行驶,尤其在山区道路上,坡陡路窄,汽车必须具有一定的爬坡能力,爬坡能力通常由最大爬坡度来衡量,最大爬坡度是汽车动力性能的重要指标之一.为此开展了基于MAT ...

  8. matlab app designer 新建应用打开mat文件绘图

    guide是matlab在1996年版本中推出的,在未来的版本中也会弃用,还是最好转为app designer 新建应用,使用app设计工具 在设计界面拉入绘图区和按钮,文本框,并修改名字 为按钮添加 ...

  9. MATLAB二维数组的创建与元素提取

    1.二维数组(矩阵)的创建 1.1直接输入法 从键盘直接输入元素.输入规则如下: 矩阵元素必须在方括号内: 同行元素之间用空格或逗号隔开: 行与行之间用分号或回车符隔开: 元素可以是数值.变量.表达式 ...

最新文章

  1. 用机器学习还原《隐秘的角落》那些被修改的台词
  2. 第10章 序列的修改、散列和切片
  3. linux 6.4定时启动,Centos6.4 设置开机自动以某个非root用户启动脚本
  4. JavaWeb学习之路——jsp与serverlet(一)
  5. 2020年Q3笔记本电脑出货量:惠普反超联想居首位 苹果第四
  6. 优雅的实现对外接口,要注意哪些问题?
  7. ENVI5.4中Himawari-8数据处理(向日葵8号卫星H-8)
  8. Aras Innovator: TOC category的视图
  9. fatal error: ft2build.h: 没有那个文件或目录
  10. Android 源码编译详解【一】:服务器硬件配置及机型推荐-2016/06
  11. 电脑取消撤销快捷键是什么_都知道“撤消”快捷键是Ctrl Z,那“反撤消”是什么呢?...
  12. Java集合——数据结构
  13. 谢烟客---------Linux之 sed工具使用
  14. 声纹识别开源框架python_GitHub - yeyupiaoling/VoiceprintRecognition-Tensorflow: 使用Tensorflow实现声纹识别,博客地址:...
  15. Java用最少代码实现五子棋-玩家对战模式-人机对战模式-电脑策略对战
  16. 关于Python中的引用
  17. SpringBoot物流管理项目,拿去学习吧(源码)
  18. 写给当初的你,现在的我
  19. 荣耀6手机apk清单
  20. Docker swarm 通过 docker-compose 部署应用

热门文章

  1. 又一个即将从后装消失的生意,谁才有资格瓜分这块更大的蛋糕?
  2. autodesk Revit材质如何转换为标准材质Stardard
  3. MongoDB的创建删除数据库,增删改文档
  4. 牛客小白月赛27题解(部分)
  5. Java基础之Java枚举
  6. 用户倒戈, 长篇推文开怼, “以太坊不值得”
  7. 无线跑步蓝牙耳机哪个牌子好、值得推荐的运动耳机
  8. *IT ps:足迹第八十七步:用ps进行照片修图
  9. matlab @匿名函数
  10. OpenGL绘制运动的自行车