一、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)