天天看點

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   本系列文章主要介紹使用MATLAB APP Desinge進行app或者說GUI界面開發的方法介紹,包括(上)和(下) 兩篇文章,上篇中主要介紹常用的GUI元件的使用方法,下篇是對上篇的補充,主要介紹開發技巧常用示例補充整理以及app檔案的釋出和部署方法,為友善了解,本文示例均帶有動态示範

   一、MATLAB APP Desinger

   在MATLAB指令行視窗輸入appdesigner打開APP Desinger界面

appdesigner
           
MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   二、常用元件介紹

   1、标簽—顯示元件的說明文本

   該元件主要用來顯示一些說明文本,較簡單,可根據需要對其進行編輯

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   2、編輯字段(數值)—輸入數值資料 和 編輯字段(文本)—輸入文本資料

   一般用來對某個變量指派,或者對某個變量進行顯示

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   3、按鈕—按下時執行指令

   我們可以通過回調函數的方式為按鈕添加互動:選中該按鈕,右鍵選擇回調,添加回調

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   在下圖的例子中,我們為該按鈕添加了互動:當按鈕按下時編輯字段(數值)類型的元件data的值增加10

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   運作效果如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   4、信号燈—亮起以訓示狀态

   我們可以根據某些變量的數值來改變信号燈的顔色等資訊,如下的例子中,我們通過按鈕元件的回調函數來改變 變量 data 的 值,并根據該值改變信号燈元件的顔色

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   效果如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   5、開關、撥動開關、跷闆開關—在兩個互斥的狀态間切換

   我們可以通過撥動開關,來改變某些标志位的狀态,進而改變程式的運作,在下面的例子中,我們通過撥動開關來改變燈的顔色

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   在此之前,我們先介紹一下strcmp算子,matlab的用法說明如下:tf=strcmp(s1,s2) 比較 s1 和 s2,如果二者相同,則傳回 1 (true),否則傳回 0 (false)。如果文本的大小和内容相同,則它們将視為相等。傳回結果 tf 的資料類型為 logical。輸入參數可以是字元串數組、字元向量和字元向量元胞數組的任何組合。

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   以上例子的回調函數如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   運作效果如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   6、坐标區—顯示資料的可視化圖像效果

   坐标區也是很常用的元件,可以顯示繪制的圖像,注意在使用plot、hold on等繪圖時常用指令時,在gui設計中需要為它們指定是對那個坐标區進行操作,在右側的編輯區内可以友善的對坐标區的各種屬性進行修改,比如坐标軸的名字、網格、視角等

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   在下面的例子中,我們讓當開關打到on時,坐标區繪制顯示兩條正弦曲線,回調函數如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   運作效果如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   此外,除了繪制曲線,我們還可以讓坐标區顯示我們指定的圖檔,在編寫圖檔的路徑時,可能遇到找不到檔案的錯誤,解決方法我在之前的文章中介紹過了,這裡放一下連結:

   MATLAB讀取圖檔時報錯:“錯誤使用 fopen 找不到檔案,確定檔案存在且路徑” 的原因及解決方法(點選可跳轉)

   圖檔的路徑表達方式采用絕對路徑和相對路徑均可,在下面的例子中,image采用了絕對路徑的方式,image2采用了相對路徑的方式,在Appdesigner中使用imshow函數時需要綁定坐标區,其中axis進行關閉坐标軸操作時也要綁定坐标區

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   運作效果如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   7、網格布局、頁籤祖、面闆 容器

   (1)網格布局:使用網格布局可以更加整齊的進行排版,如下所示

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   (2)頁籤祖:使用頁籤祖,可以節省app的整體空間,在同一個區域建立多個不同的頁面,如下所示:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   (3)面闆:使用面闆可以将界面分成多個不同的區域,分區域完成開完友善快捷,在移動時面闆内的内容會當成一個整體進行移動,較為友善

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   8、菜單欄、上下文菜單、工具欄 容器

   (1)菜單欄:類似于軟體最頂端的菜單選項,每個選項都可以右鍵通過設定回調函數來進行互動,如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   (2)上下文菜單:也就是常用的右鍵菜單,運作後,在界面空白處,按下滑鼠右鍵都可以調出,同樣在編輯時右鍵選擇回調函數為其添加互動

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   (3)工具欄:類似于我們軟體的工具欄,同樣右鍵為其添加回調函數進行互動,如下所示:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   9、儀表

   儀表也是常用的顯示元件,将要顯示的資料指派給儀表進行顯示,可在右側編輯區對儀表的各種屬性進行編輯,儀表是沒有回調函數的

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   10、旋鈕、分檔旋鈕和滑塊

   旋鈕是常用的輸入元件,可以将旋鈕輸入的值指派給程式中的某個變量,來改變程式的運作旋鈕輸入是連續的值,分檔旋鈕是離散的幾個設定的值,分檔旋鈕可以看成,有多個選項的開關,滑塊的作用跟旋鈕相同,不再介紹

   其中旋鈕和滑塊有兩種回調函數,ChangedFcn是當你松開手以後,才将旋鈕的值輸送給指派的變量,而ChangingFcn是實時指派給變量,即你拖動過程中值是實時傳輸的

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   其中分檔旋鈕,各裆的值可以是文本,在判斷時,同樣借助前面介紹過strcmp語句用來判斷目前旋鈕所在檔位是否為需要的檔位

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   11、日期選擇器—按指定格式選擇和顯示日期

   功能如名所示,日期值可以作為輸入變量用,效果如下:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   12、文本區域—輸入多行文本

   文本區域可以用來輸入多行文本,也可以用來進行文本/變量的顯示,注意顯示的變量要使用string強制轉換成字元串格式,在下面的例子中,我們将選擇的日期變量用文本區域顯示出來

   程式示例:

% Value changed function: DatePicker
        function DatePickerValueChanged(app, event)
            value = app.DatePicker.Value;
            app.TextArea.Value=string(value);
        end
           

   運作效果:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   13、下拉框、切換按鈕組、清單框、單選按鈕組

   下拉框、切換按鈕組、清單框、單選按鈕組都可以用來從多個設定的值中選擇一個的輸入元件,跟分檔按鈕類似,可使用if或switch語句從多個設定值中判斷目前選中的值,來進行相關操作。他們的原理和發揮的作用基本上是類似的,隻是選擇操作的形式和外觀有所差異

   當然他們之間也存在一些差異,比如他們之間除了都有上面介紹的值/選擇改變回調函數,在其他回調函數上有所不同,如下所示:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   下面先舉一個下拉框的例子,當選擇option3(可以修改)的時候,讓右側的燈變為紅色,其他選擇燈為藍色

   程式示例:

% Value changed function: DropDown
        function DropDownValueChanged(app, event)
            value = app.DropDown.Value;
            
            if value=="Option 3"
                app.Lamp_2.Color="1.00,0.00,0.00";
            else
                app.Lamp_2.Color="0.07,0.62,1.00";
            end
        end
           

   運作效果

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   14、微調器—輸入數值資料并通過遞增或遞減調整資料

   微調器用法跟編輯字段(數值)類似,隻不過多了可以通過滑鼠點選箭頭,按照設定步長增減資料的功能

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   15、圖像—顯示圖示或徽标

   圖像控件可以加載圖像到gui界面,而且可以為加載的圖像建立回調函數,是以從某種意義上将,可以将圖像元件看出自定義圖示的按鈕控件

   16、複選框—從兩個選項中選擇一個狀态

   複選框控件的原理跟開關控件類似,它的傳回值是0和1(true和false),在這裡就先不贅述了

   17、表格控件—顯示表格資料

   表格控件可用于将資料以表格的形式顯示出來,可借用readtable函數從xls、txt等檔案中讀取資料,在右側的編輯欄中可選擇資料是否可編輯、是否可排序等,示例如下

% Button pushed function: Button4
        function Button4Pushed(app, event)
            t=readtable("data2.xls");
            app.UITable.Data=t;
        end
           
MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   在上面例子的基礎上,我們将讀取的資料在坐标區繪制出來,例子如下所示:

% Button pushed function: Button4
        function Button4Pushed(app, event)
            t=readtable("data2.xls");
            app.UITable.Data=t;
            
            x=table2array(t(:,1));
            y=table2array(t(:,2));
            
            scatter(app.UIAxes2,x,y,"blue","filled")
            
        end
           
MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   接下來的例子介紹表格資料的添加,這裡有一點要強調,在回調函數中建立的變量是局部變量,在其他函數中無法使用,我們可以通過屬性,來建立在app内部/内部和外部共享的資料變量,這個變量可以在各個回調函數中使用,假設建立的變量為t,則在使用時要用app.t,這與c++中類的使用類似

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹
MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹
MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   程式示例:

% Button pushed function: Button4
        function Button4Pushed(app, event)
            app.t=readtable("data2.xls");
            app.UITable.Data=app.t;
            
            x=table2array(app.t(:,1));
            y=table2array(app.t(:,2));
            
            scatter(app.UIAxes2,x,y,"blue","filled")
            
        end

        % Button pushed function: Button5
        function Button5Pushed(app, event)
            x=app.EditField.Value;
            y=app.EditField2.Value;
            
            app.t=[app.t ; {x y}];
            app.UITable.Data=app.t;
            
        end
           

   效果示範:

MATLAB APP Desinger 使用方法介紹(上)---常用GUI元件介紹

   此外,如果我們想删除表格中某些元素,隻要按照索引,将其該元素的位置設為空,即指派為[] 即可。

繼續閱讀