在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 use
app.CallingApp = mainapp;
% Update UI with input values
app.EditField.Value = sz;
app.DropDown.Value = c;
2.从主 App 的回调中调用对话框 App。打开主 App 的代码视图,然后为选项按钮添加一个回调函数。此回调禁用选项按钮,以防止用户打开多个对话框。接下来,它获取要传递给对话框的值,然后使用输入参数和输出参数调用对话框 App。输出参数是对话框 App 对象。
% Disable Plot Options button while dialog is open
app.OptionsButton.Enable = 'off';
% Open the options dialog and pass inputs
app.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 properties
app.CurrentSize = sz;
app.CurrentColormap = c;
% Update plot
Z = peaks(sz);
surf(app.UIAxes,Z);
colormap(app.UIAxes,c);
% Re-enable the Plot Options button
app.OptionsButton.Enable = 'on';
end
5.在对话框 App 中创建一个属性,以存储主 App。打开对话框 App 的代码视图,然后创建一个名为 CallingApp
的私有属性。在编辑器选项卡上选择属性 > 私有属性。然后,将 properties
模块中的属性名称更改为 CallingApp
properties (Access = private)
CallingApp % Main app object
end
6.从对话框 App 的回调中调用公共函数。在对话框 App 保持打开的情况下,为确定按钮添加一个回调函数。
在此回调中,将 CallingApp
属性和用户的选择传递给公共函数。然后调用 delete
函数以关闭对话框。
% Call main app's public function
updateplot(app.CallingApp, app.EditField.Value, app.DropDown.Value);
% Delete the dialog box
delete(app)
7.打开对话框 App 的代码视图,右键点击组件浏览器中的 app.UIFigure
对象,然后选择回调 > 添加 CloseRequestFcn 回调。然后添加重新启用主 App 中的按钮并关闭对话框 App 的代码。
function DialogAppCloseRequest(app,event)
% Enable the Plot Options button in main app
app.CallingApp.OptionsButton.Enable = 'on';
% Delete the dialog box
delete(app)
end
8.打开主 App 的代码视图,右键点击组件浏览器中的 app.UIFigure
对象,然后选择回调 > 添加 CloseRequestFcn 回调。然后添加删除这两个 App 的代码。
function MainAppCloseRequest(app,event)
% Delete both apps
delete(app.DialogApp)
delete(app)
end
官网:https://ww2.mathworks.cn/help/matlab/creating_guis/creating-multiwindow-apps-in-app-designer.html
上一篇: php中文处理函数
下一篇: 解析雅虎天气API返回的XML数据
推荐阅读
-
在matlab中使用APP designer创建多窗口APP
-
matlab使用App designer生成可独立运行的app
-
ToolBar控件在C#开发APP中的使用方式【附案例源码】——Smobiler移动开发平台
-
详解iOS App中UISwitch开关组件的基本创建及使用方法
-
Objective-C的缓存框架EGOCache在iOS App开发中的使用
-
详解iOS App中UISwitch开关组件的基本创建及使用方法
-
Objective-C的缓存框架EGOCache在iOS App开发中的使用
-
iOS App中UILabel的自定义及在Auto Layout中的使用
-
iOS App中UILabel的自定义及在Auto Layout中的使用
-
在 create-react-app 创建的项目中使用 less 模块化