MATLAB app designer 菜鸟进阶学习(一)
一、App Designer启动
1.打开方式
(1)打开 App 设计工具的首页
appdesigner
(2)打开现有 App 文件
appdesigner(filename)
filename:
App 文件的名称或路径,指定为字符向量或字符串标量。可以在文件名中包括 .mlapp
。一次只能将一个文件名传递给 appdesigner
函数。
如果 filename
出现在搜索路径上的多个文件夹中,请包括该文件的路径。文件指定必须使用文件的完整路径或相对路径,或者 MATLAB 路径上的文件的名称。
示例: appdesigner(\'app1.mlapp\')
示例: appdesigner("app1")
示例: appdesigner("C:\Documents\Data\watertables.mlapp")
(3)菜单栏打开
新建——App
2.首页
在首页中可以创建新的空白 App,或者新的具有自动调整布局功能的两栏式或三栏式 App,还可以:
-
查看最近使用的 App 列表。
-
浏览精选示例以帮助快速入门。
-
参考指导教程,学习 App 设计工具的基础知识。
-
探索教程中重点介绍的 App 设计工具新功能。
二、控件
2.1 常用组件
2.1.1 下拉框
除了可以直接拖拽外,此处详注程序创建及编辑方式。
(1)程序自动生成下拉框
程序自动创建一个具有默认项目的下拉组件。
fig = uifigure; dd = uidropdown(fig);
(2)程序创建下拉组件指定项内容。
fig = uifigure; dd = uidropdown(fig,\'Items\',{\'Red\',\'Yellow\',\'Blue\',\'Green\'},... \'Value\',\'Blue\');
(3)创建可编辑的下拉列表
fig = uifigure; dd = uidropdown(fig,\'Editable\',\'on\');
(4)属性
字体和颜色(略)
交互性
Visible
属性确定下拉组件是否显示在屏幕上。如果 Visible
属性设置为 \'off\'
,下拉组件将隐藏,但仍然可以指定和访问它的属性。要使 App 更快地启动,请将不需要在启动时出现的所有组件的 Visible
属性设置为 \'off\'
。
Editable 属性值为 \'on\',则下拉组件文本可更改;当
为 Enable
\'off\'
,则 App 用户不能更改下拉组件文本,即使 Editable 属性值为 \'on\'
也是如此。
Enable属性
-
如果您将此属性值设置为
\'on\'
,下拉组件的外观将指示 App 用户可以更改下拉组件值。 -
如果您将此属性值设置为
\'off\'
,下拉组件的外观将灰显。此外观指示 App 用户不能更改下拉组件值,而且下拉组件不会触发任何回调。
tooltips 工具提示,指定为字符向量、字符向量元胞数组、字符串数组或一维分类数组。如果使用此属性,则在运行时当用户将指针悬停在组件上时,将显示消息。即使禁用组件,工具提示也会显示。要显示多行文本,请指定字符向量元胞数组或字符串数组。数组中的每个元素变为一行文本。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。
回调属性
Interruptible - 回调中断 \'on\' (默认) | \'off\'
回调中断,指定为 \'on\'
或 \'off\'
。Interruptible
属性确定是否可以中断运行中回调。
有以下两种回调状态要考虑:
-
运行中回调是当前正在执行的回调。
-
中断回调是试图中断运行中回调的回调。
每当 MATLAB 调用回调时,回调都会试图中断正在运行的回调(如果存在)。运行中回调所属对象的 Interruptible
属性决定着是否允许中断。Interruptible
属性具有下列两个可能的值:
usyAction - 回调排队 \'queue\' (默认) | \'cancel\'
回调排队,指定为 \'queue\'
或 \'cancel\'
。BusyAction
属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:
-
运行中回调是当前正在执行的回调。
-
中断回调是试图中断运行中回调的回调。
无论何时 MATLAB 调用回调,该回调都会试图中断运行中回调。运行中回调所属对象的 Interruptible
属性决定着是否允许中断。如果不允许中断,则中断回调所属对象的属性 BusyAction
将决定是放弃该回调还是将回调放入队列中。以下是 BusyAction
属性的可能值:
-
\'queue\'
- 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。 -
\'cancel\'
- 不执行中断回调。
HandleVisibility - 对象句柄的可见性 \'on\' (默认) | \'callback\' | \'off\'
对象句柄的可见性,指定为 \'on\'
、\'callback\'
或 \'off\'
。
此属性控制对象在其父级的子级列表中的可见性。当对象未显示在其父级的子级列表中时,通过搜索对象层次结构或查询属性来获取对象的函数不会返回该对象。这些函数包括 get
、findobj
、clf
和 close
。对象即使在不可见时也有效。如果可以访问某个对象,则可以设置和获取其属性,并将其传递给针对对象进行运算的任意函数。
(6)示例
将以下代码保存到 MATLAB 路径中的 plotOptions.m
中。以下代码将创建一个窗口,其中包含一个绘图和一个下拉组件。当 App 用户更改下拉组件选择时,ValueChangedFcn
回调将改变绘图的颜色。
function plotOptions fig = uifigure; fig.Position(3:4) = [440 320]; ax = uiaxes(\'Parent\',fig,... \'Position\',[10 10 300 300]); x = linspace(-2*pi,2*pi); y = sin(x); p = plot(ax,x,y); p.Color = \'Blue\'; dd = uidropdown(fig,... \'Position\',[320 160 100 22],... \'Items\',{\'Red\',\'Yellow\',\'Blue\',\'Green\'},... \'Value\',\'Blue\',... \'ValueChangedFcn\',@(dd,event) selection(dd,p)); end % Create ValueChangedFcn callback: function selection(dd,p) val = dd.Value; p.Color = val; end
创建一个下拉组件和一个信号灯。当 App 用户从下拉组件中选择选项时,信号灯的大小将改变。
请将以下代码保存到 MATLAB 路径中的 lampSize.m
中。以下代码将创建一个图窗窗口,其中包含一个下拉组件和一个信号灯。当 App 用户更改下拉组件选项时,ValueChangedFcn
回调将改变信号灯的大小。
function lampSize % Create figure and components fig = uifigure(\'Position\',[100 100 300 275]); lmp = uilamp(fig,... \'Position\',[100 30 20 20]); dd = uidropdown(fig,... \'Editable\',\'on\',... \'Position\',[84 204 100 20],... \'Items\',{\'Size x 1\',\'Size x 2\',\'Size x 3\',\'Size x 4\'},... \'ItemsData\',[1 2 3 4],... \'Value\',1,... \'ValueChangedFcn\',@(dd,event) optionSelected(dd,lmp)); end % Create ValueChangedFcn callback function optionSelected(dd,lmp) val = dd.Value; s = [20 20]; switch val case {1, 2, 3, 4} % User selected a defined option size = val * s; lmp.Position(3:4) = size; otherwise % User typed a value m = str2num(val); size = m * s; lmp.Position(3:4) = size; end end
(7)其他
下拉框控件的值 Value返回的是字符串,为了使返回值变为数值型,直接用于数值运算,可以采用语句:
value=str2double(app.XX.value)