在介紹完成界面後,大家對各個控制項有了一個大概的認識,如何往深處學習,當然是結合實際例子來進行練習咯。
首先新建一個GUI界面,保存,命名為GUI01,可以發現會生成一個fig文件和m文件,其中這兩個文件的名字都會是GUI01,當Matlab定位在包含這兩個文件的文件夾路徑下時,拖動其中的任何一個文件到Command Window中都會運行完成的界面圖形,如果需要更改完善,右鍵fig文件,打開方式為GUIDE,就可在原來的基礎上進行修改
上回講了一下界面的基本組成,那麼這次就要介紹一下相應的m文件中包含的一些常用內容,在不添加任何控制項的情況下,會有三個以GUI01為頭的函數,分別對應GUI窗口界面,GUI打開時預處理函數,GUI界面的輸出,一般這三個默認函數不要自行改動,最多就是在OpeningFcn函數中進行數據的預置。
學過C語言的知道,通過類比,matlab中函數會包含形參(handles,eventdata等等)、使用函數包含數據的傳輸(setappdata,getappdata這些函數會在後講到),在這三個函數中,當然也包含了形參,如下所示
GUI界面的好處是,在生成任何一個回調函數時,都會生成一個注釋及該回調函數可能用到的形參,非常方便,而GUI界面開發主要用到的函數有set,get,setappdata,getappdata,傳送參數有handles,eventdata後續使用中會發現其用的非常非常多
那麼,作為控制項的介紹,用實例說話才算,現在來進行Push Button、Edit Text、Static Text控制項的介紹
1.首先,往開發界面中拖入一個StaticText,雙擊該控制項,調出其屬性菜單,修改其FontSize屬性值為14、ForegroundColor屬性值選為紅色、String屬性值設置為請輸入相加的兩個數:
在界面上,我們的提示也就出現了
2.再拖入兩個Edit Text(右擊控制項拖動為複製控制項),三個Static Text,一個PushButton按鈕,調整一下畫幅大小(GUI主界面的右下角黑點)如圖所示
3.設置(按照從左到右,從上往往下的順序設置)
設置第一個Edit Text的Tag屬性值為sum1,String屬性值清空(回車為確認修改)
設置第一個Static Text的String屬性值為+,FontSize的屬性值為14
設置第二個Edit Text的Tag屬性值為sum2,String屬性值清空
設置第二個Static Text的String屬性值為=,FontSize的屬性值為14
設置第三個Static Text的String屬性值為空,Tag的屬性值為sum_value
利用對齊工具對上述組件進行垂直對齊,選中這五個組件,選擇垂直居中並應用
4.設置按鈕的屬性設置其FontSize的屬性值為14,String的屬性值為計算,Tag的屬性值為Add
到此,界面設計完畢
5.回調函數的編寫,右擊按鈕--->viewCallbacks--->Callback
會將編輯器打開,而且,其函數的開頭是以按鈕的Tag(Add)開頭,其參數有hObject,eventdata,handles,在這個案例中,我們使用handles就可以
在函數下面寫入以下代碼:
sum_value1=str2num(get(handles.sum1,'String'));
sum_value2=str2num(get(handles.sum2,'String'));
sum=sum_value1+sum_value2;
set(handles.sum_value,'String',num2str(sum));
代碼講解:
用get函數分別獲得輸入框中的文本內容,其中,對象由handles.Tag來唯一對應,sum1就是第一個編輯框的Tag,String為其輸入框的一個屬性,正好對應文本,但是,數學的運算只能是數字計算,所以出現str2num這個函數,不用的話計算結果會出錯,是將字符串變成數字。對兩個數值進行相加後,同理,num2str將數字轉變成字符串,利用set函數送到第三個Static Text中,其Tag為sum_value。
運行(F5或點腳本運行按鈕)以後在第一個框中輸入數字,第二個框中輸入數字,點擊計算,會出現以下結果:其界面的名字與fig及m文件的名字一致
到此,腳本的組成,回調函數的添加,按鈕控制項Push Button與文本控制項Edit Text及Static Text的應用就介紹完成
在朋友圈中有人留言製作Stateflow的教程,這個確實挺難,只能提供當時我用來學習的書本給大家,在這裡要感謝一下我的沈姓博士師兄,提供這本書的資料,這本書是張威編著的,用以學習Stateflow很好,在這借花獻佛
《Sateflow邏輯系統建模》下載連結:
https://pan.baidu.com/s/1e-7TFM2UtxZTpm7oM-FTTg
提取密碼:cj2k
往期回顧: