在matlab中使用APP designer创建多窗口APP
如果是创建两个窗口的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相关推荐
- matlab函数画图创建gui,如何在MATLAB中的函数内创建GUI?
build a GUI有多种方法,例如使用App Designer,GUIDE或以编程方式创建它(我将在下面说明此选项).了解GUI组件和 options available for sharing ...
- Matlab中结构体struct创建和使用
在项目上遇见了调用api接口,接口返回的信息为struct,故探讨一下matlab的struct结构体 1.struct结构体创建 创建结构体数组有两种方式,分别为直接创建和使用struct函数 1. ...
- Matlab App Designer 【02】APP打包和安装
APP发布和部署 一.安装到Matlab主界面APP 二.安装到Web端 解压MATLABWebAppServer.zip 安装MATLAB Runtime 设置路径 配置MATLABWebAppSe ...
- [MATLAB App Designer] 多窗口 App 中的交互(含数据传递)
以下均为自己的学习总结,有不对的地方,或者有更便捷的方法欢迎指正. 关于这部分的官方文档如下: https://ww2.mathworks.cn/help/matlab/creating_guis/m ...
- 《MATLAB App Designer从入门到实践》随书源代码
GUIDE已经被MATLAB抛弃了,你还不知道吗?App Designer才是发展的方向 目前市面上MATLAB GUI编程的书籍琳琅满目,但大多数是基于GUIDE开发的,MATLAB从2016年开始 ...
- MATLAB App Designer —— 手撕代码学习总结
文章目录 MATLAB App Designer 官方文档 MATLAB App Designer 官方示例 (一) (1.1)csvread() 函数 (1.2)xlsread() 函数 (1.3) ...
- 汽车各档爬坡度曲线matlab,基于MATLAB App Designer的汽车爬坡能力建模与仿真
1. 引言 汽车常常需要在不同区域的不同道路上行驶,尤其在山区道路上,坡陡路窄,汽车必须具有一定的爬坡能力,爬坡能力通常由最大爬坡度来衡量,最大爬坡度是汽车动力性能的重要指标之一.为此开展了基于MAT ...
- matlab app designer 新建应用打开mat文件绘图
guide是matlab在1996年版本中推出的,在未来的版本中也会弃用,还是最好转为app designer 新建应用,使用app设计工具 在设计界面拉入绘图区和按钮,文本框,并修改名字 为按钮添加 ...
- MATLAB二维数组的创建与元素提取
1.二维数组(矩阵)的创建 1.1直接输入法 从键盘直接输入元素.输入规则如下: 矩阵元素必须在方括号内: 同行元素之间用空格或逗号隔开: 行与行之间用分号或回车符隔开: 元素可以是数值.变量.表达式 ...
最新文章
- 用机器学习还原《隐秘的角落》那些被修改的台词
- 第10章 序列的修改、散列和切片
- linux 6.4定时启动,Centos6.4 设置开机自动以某个非root用户启动脚本
- JavaWeb学习之路——jsp与serverlet(一)
- 2020年Q3笔记本电脑出货量:惠普反超联想居首位 苹果第四
- 优雅的实现对外接口,要注意哪些问题?
- ENVI5.4中Himawari-8数据处理(向日葵8号卫星H-8)
- Aras Innovator: TOC category的视图
- fatal error: ft2build.h: 没有那个文件或目录
- Android 源码编译详解【一】:服务器硬件配置及机型推荐-2016/06
- 电脑取消撤销快捷键是什么_都知道“撤消”快捷键是Ctrl Z,那“反撤消”是什么呢?...
- Java集合——数据结构
- 谢烟客---------Linux之 sed工具使用
- 声纹识别开源框架python_GitHub - yeyupiaoling/VoiceprintRecognition-Tensorflow: 使用Tensorflow实现声纹识别,博客地址:...
- Java用最少代码实现五子棋-玩家对战模式-人机对战模式-电脑策略对战
- 关于Python中的引用
- SpringBoot物流管理项目,拿去学习吧(源码)
- 写给当初的你,现在的我
- 荣耀6手机apk清单
- Docker swarm 通过 docker-compose 部署应用