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)屬性

Value - 值
Items 的元素 | ItemsData 的元素

  值,指定為 Items 或 ItemsData 數組的元素。默認情況下,Value 是 Items 中的第一個元素。

  將 Value 指定為 Items 的元素,即可選擇與該元素匹配的下拉項。如果 ItemsData 非空,則 Value 必須設置為 ItemsData 的元素,而下拉列表將選中列表中的關聯項目。

Items - 下拉項
{'Option 1','Option 2','Option 3','Option 4'} (默認) | 字符向量元胞數組 | 字符串數組 | ...

  下拉項,指定為字符向量元胞數組、字符串數組或一維分類數組。允許重復的元素。下拉組件顯示的選項與 Items 數組中的元素數量一樣多。如果將此屬性指定為分類數組,MATLAB® 將使用數組中的值,而不是完整的類別集。

ItemsData - 與 Items 屬性值的每個元素關聯的數據
空數組 ([]) (默認) | 1×n 數值數組 | 1×n 元胞數組

  與 Items 屬性值的每個元素關聯的數據,指定為 1×n 數值數組或 1×n 元胞數組。允許重復的元素。

  例如,如果您將 Items 值設置為員工姓名,則可以將 ItemsData 值設置為對應的員工 ID 號。ItemsData 值對 App 用戶不可見。

  如果 ItemsData 值和 Items 值中的數組元素數量不匹配,將發生以下情況之一:

  • 如果 ItemsData 值為空,則 Items 值的所有元素都呈現給 App 用戶。

  • 如果 ItemsData 值中的元素數大於 Items 值,則 Items 值的所有元素都呈現給 App 用戶。MATLAB 將忽略多余的 ItemsData 元素。

  • 如果 ItemsData 值非空,但元素數少於 Items 值,只將在 ItemsData 值中具有對應元素的 Items 值的元素呈現給 App 用戶。

字體和顏色(略)
交互性

 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 屬性具有下列兩個可能的值:

  • 'on' - 允許其他回調中斷對象的回調。中斷發生在 MATLAB 處理隊列的下一個位置,例如當存在 drawnowfigureuifiguregetframewaitfor 或 pause 命令時。

    • 如果運行中回調包含以上命令之一,則 MATLAB 將在該時刻停止執行回調並執行中斷回調。當中斷回調完成時,MATLAB 將恢復執行運行中回調。

    • 如果運行中回調不包含以上命令之一,則 MATLAB 執行完當前回調,不會出現任何中斷;

  • 'off' - 阻止所有中斷嘗試。由中斷回調所屬的對象的 BusyAction 屬性決定是放棄該中斷回調還是將其放入隊列中。

usyAction - 回調排隊
'queue' (默認) | 'cancel'

回調排隊,指定為 'queue' 或 'cancel'BusyAction 屬性決定 MATLAB 如何處理中斷回調的執行。有以下兩種回調狀態要考慮:

  • 運行中回調是當前正在執行的回調。

  • 中斷回調是試圖中斷運行中回調的回調。

無論何時 MATLAB 調用回調,該回調都會試圖中斷運行中回調。運行中回調所屬對象的 Interruptible 屬性決定着是否允許中斷。如果不允許中斷,則中斷回調所屬對象的屬性 BusyAction 將決定是放棄該回調還是將回調放入隊列中。以下是 BusyAction 屬性的可能值:

  • 'queue' - 將中斷回調放入隊列中,以便在運行中回調執行完畢后進行處理。

  • 'cancel' - 不執行中斷回調。

HandleVisibility - 對象句柄的可見性
'on' (默認) | 'callback' | 'off'

 對象句柄的可見性,指定為 'on''callback' 或 'off'

  此屬性控制對象在其父級的子級列表中的可見性。當對象未顯示在其父級的子級列表中時,通過搜索對象層次結構或查詢屬性來獲取對象的函數不會返回該對象。這些函數包括 getfindobjclf 和 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)

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM