第8講圖形用戶界面設(shè)計.ppt_第1頁
第8講圖形用戶界面設(shè)計.ppt_第2頁
第8講圖形用戶界面設(shè)計.ppt_第3頁
第8講圖形用戶界面設(shè)計.ppt_第4頁
第8講圖形用戶界面設(shè)計.ppt_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第八講 MATLAB圖形用戶界面設(shè)計圖形用戶界面設(shè)計工具1主要內(nèi)容圖形用戶界面的設(shè)計原則和一般步驟圖形用戶界面設(shè)計圖形用戶界面設(shè)計工具應(yīng)用21 圖形用戶界面的設(shè)計原則和一般步驟 圖形用戶界面就是通過窗口、選單、按鈕、文字說明等對象構(gòu)成一個美觀的界面,提供用戶利用鼠標(biāo)或鍵盤方便地實現(xiàn)操作。 MATLAB設(shè)計圖形用戶界面的方法有兩種:使用可視化的界面環(huán)境(圖形用戶界面設(shè)計工具)和通過編寫程序。 3設(shè)計原則1.簡單性 設(shè)計界面時,應(yīng)力求簡捷、直觀、清晰地體現(xiàn)出界面的功能和特征。窗口數(shù)目盡量少,力避不同窗口間來回切換;多采用圖形,少用數(shù)值;不要出現(xiàn)可有可無的功能。4設(shè)計原則(續(xù))2.一致性 兩層含義:

2、一指自己設(shè)計的界面風(fēng)格要盡量一致;二指新設(shè)計的界面要與其他已有的界面風(fēng)格要一致。一般習(xí)慣圖形區(qū)在界面左側(cè),控制區(qū)在右側(cè)。5設(shè)計原則(續(xù))3. 習(xí)常性 設(shè)計界面時,應(yīng)盡量使用人們所熟悉的標(biāo)志和符號,便于用戶使用。4. 其他考慮因素 除了以上靜態(tài)性能之外,還應(yīng)注意界面的動態(tài)性能:界面對用戶操作的響應(yīng)要迅速、連續(xù);對持續(xù)時間較長的運算要給出等待時間提示,并允許用戶中斷運算。6一般制作步驟界面制作包括界面設(shè)計和程序?qū)崿F(xiàn)。分析界面所要實現(xiàn)的主要功能,明確設(shè)計任務(wù);繪界面草圖,注意從使用者的角度來考慮界面布局;按構(gòu)思的草圖,上機制作靜態(tài)界面;編寫界面動態(tài)功能程序。72 圖形用戶界面設(shè)計1 可視化的界面環(huán)境

3、 打開GUI設(shè)計工具的方法有以下幾種:(1) 選擇菜單“File”“ New”“GUI”命令;(2) 在指令窗口輸入以下命令: guide 打開空白設(shè)計工作臺 guide FN 在工作臺中打開文件名為FN 的用戶界面注意:在guide指令作用下,待打開的文件名不分字母的大小寫。8圖形用戶界面設(shè)計(續(xù)) 打開的GUI啟動界面提供新建界面(Create New GUI)和打開已有界面文件(Open Existing GUI)的屬性頁。新建界面可以選擇空白界面、包含有控件的模板界面、包含有軸對象和菜單的模板界面、標(biāo)準(zhǔn)詢問窗口等選項。 選擇任意一項都會打開GUI設(shè)計工作臺,對界面靜態(tài)組成部分進行的具體

4、的修改工作都是在工作臺實現(xiàn)的。9圖形用戶界面設(shè)計(續(xù))如在指令窗鍵入:guide,則可得到如下GUI設(shè)計工具的啟動界面:空白界面有控件的模板界面有軸對象和菜單的模板界面標(biāo)準(zhǔn)詢問窗口10圖形用戶界面設(shè)計(續(xù)) 若激活打開已有界面文件(Open Existing GUI)的屬性頁,則可通過打開文件瀏覽器(Browse)選定需打開文件并打開,主窗口則顯示最近打開的界面文件的列表。最近打開的界面文件列表打開文件瀏覽器11圖形用戶界面設(shè)計(續(xù))如在新建界面中選擇“Blank GUI (Default)”,然后單擊“OK”按鈕,就會出現(xiàn)如下的GUI設(shè)計工作臺:12圖形用戶界面設(shè)計(續(xù))GUI設(shè)計工作臺有4

5、個功能區(qū):菜單條、編輯工具條、控件模板區(qū)、設(shè)計工作區(qū)。菜單條編輯工具條控件模板區(qū)設(shè)計工作區(qū)13M文件編輯器運行控件面板對象瀏覽器界面設(shè)計區(qū)屬性編輯器菜單編輯器對象對齊工具Tab順序編輯器14圖形用戶界面設(shè)計工具MATLAB的用戶界面設(shè)計工具(1) 圖形用戶界面設(shè)計窗口:在窗口內(nèi)創(chuàng)建、安排各種圖形對象。(2) 菜單編輯器(Menu Editor):創(chuàng)建、設(shè)計、修改下拉式菜單和快捷菜單。(3) 對象屬性查看器(Property Inspector):可查看每個對象的屬性值,也可修改設(shè)置對象的屬性值。15圖形用戶界面設(shè)計工具(4) 位置調(diào)整工具(Alignment Tool):可利用該工具左右、上下

6、對多個對象的位置進行調(diào)整。(5) 對象瀏覽器(Object Browser):可觀察當(dāng)前設(shè)計階段的各個句柄圖形對象。(6) Tab順序編輯器(Tab Order Editor):通過該工具,設(shè)置當(dāng)用戶按下鍵盤上的Tab鍵時,對象被選中的先后順序。16GUI設(shè)計模板MATLAB為GUI設(shè)計一共準(zhǔn)備了4種模板Blank GUI(默認(rèn))GUI with Uicontrols(帶控件對象的GUI模板)GUI with Axes and Menu(帶坐標(biāo)軸與菜單的GUI模板) Modal Question Dialog(帶模式問話對話框的GUI模板) 當(dāng)用戶選擇不同的模板時,在GUI設(shè)計模板界面的右邊就

7、會顯示出與該模板對應(yīng)的GUI圖形。17對象屬性查看器在選中某個對象后,可以通過對象屬性查看器,查看該對象的屬性值,也可以方便地修改對象屬性的屬性值。從GUI設(shè)計窗口工具欄上選擇Property Inspector命令按鈕View菜單下的Property Inspector子菜單,就可以打開對象屬性查看器。另外,在MATLAB命令窗口的命令行上輸入inspect,也可以看到對象屬性查看器。18菜單編輯器利用菜單編輯器,可以創(chuàng)建、設(shè)置、修改下拉式菜單和快捷菜單。從GUI設(shè)計窗口的工具欄上選擇Menu Editor命令按鈕或Tools菜單下的Menu Editor子菜單,就可以打開菜單編輯器。菜單編

8、輯器左上角的第一個按鈕用于創(chuàng)建一級菜單項。第二個按鈕用于創(chuàng)建一級菜單的子菜單。菜單編輯器的左下角有兩個按鈕,選擇第一個按鈕,可以創(chuàng)建下拉式菜單,選擇第二個按鈕,可以創(chuàng)建Context Menu菜單。菜單編輯器的右邊就會顯示該菜單的有關(guān)屬性,可以在這里設(shè)置、修改菜單的屬性。19創(chuàng)建用戶菜單1.菜單編輯在GUI設(shè)計工作臺的菜單條選擇“Tool”Menu Editor”或單擊工具欄“Menu Editor”按鈕,就會出現(xiàn)菜單編輯器窗口。新建菜單新建子菜單菜單左、右移菜單上、下移刪除菜單填寫菜單名,如果在前面加“&”符號則加快捷鍵,當(dāng)運行時第一個字母會加下劃線,以便用戶快速激活菜單項標(biāo)記分隔符初值是否

9、已選輸入回調(diào)函數(shù)20位置調(diào)整工具利用位置調(diào)整工具,可以對GUI對象設(shè)計區(qū)內(nèi)的多個對象的位置進行調(diào)整。從GUI設(shè)計窗口的工具欄上選擇Align Objects命令按鈕,或者選擇Tools菜單下的Align Objects菜單項,就可以打開對象位置調(diào)整器。對象位置調(diào)整器中的第一欄是垂直方向的位置調(diào)整。對象位置調(diào)整器中的第二欄是水平方向的位置調(diào)整。在選中多個對象后,可以方便的通過對象位置調(diào)整器調(diào)整對象間的對齊方式和距離。21對象瀏覽器利用對象瀏覽器,可以查看當(dāng)前設(shè)計階段的各個句柄圖形對象。從GUI設(shè)計窗口的工具欄上選擇Object Browser命令按鈕,或者選擇View菜單下的Object Bro

10、wser子菜單,就可以打開對象瀏覽器。在對象瀏覽器中,用鼠標(biāo)雙擊圖中的任何一個對象,可以進入對象的屬性查看器界面。22Tab順序編輯器利用Tab順序編輯器(Tab Order Editor),可以設(shè)置用戶按鍵盤上的Tab鍵時,對象被選中的先后順序。選擇Tools菜單下的Tab Order Editor菜單項,就可以打開Tab順序編輯器。例如,若在GUI設(shè)計窗口中創(chuàng)建了3個對象,與它們相對應(yīng)的Tab順序編輯器。231. GUI控件對象類型 控件對象是事件響應(yīng)的圖形界面對象。當(dāng)某一事件發(fā)生時,應(yīng)用程序會做出響應(yīng)并執(zhí)行某些預(yù)定的功能子程序(Callback).2. 控件對象的描述 Matlab中的控

11、件大致可分為兩種,一種為動作控件,鼠標(biāo)點擊這些控件時會產(chǎn)生相應(yīng)的響應(yīng)。一種為靜態(tài)控件,是一種不產(chǎn)生響應(yīng)的控件,如文本框等。 控件對象及屬性 每種控件都有一些可以設(shè)置的參數(shù),用于表現(xiàn)控件的外形、功能及效果,既屬性。屬性由兩部分組成:屬性名和屬性值,它們必須是成對出現(xiàn)的。24按鈕(Push Buttons):執(zhí)行某種預(yù)定的功能或操作;開關(guān)按鈕(Toggle Button):產(chǎn)生一個動作并指示一個二進制狀態(tài)(開或關(guān)),當(dāng)鼠點擊它時按鈕將下陷,并執(zhí)行callback(回調(diào)函數(shù))中指定的內(nèi)容,再次點擊,按鈕復(fù)原,并再次執(zhí)行callback 中的內(nèi)容;單選框(Radio Button):單個的單選框用來在

12、兩種狀態(tài)之間切換,多個單選框組成一個單選框組時,用戶只能在一組狀態(tài)中選擇單一的狀態(tài),或稱為單選項;復(fù)選框(Check Boxes):單個的復(fù)選框用來在兩種狀態(tài)之間切換,多個復(fù)選框組成一個復(fù)選框組時,可使用戶在一組狀態(tài)中作組合式的選擇,或稱為多選項;文本編輯器(Editable Texts):用來使用鍵盤輸入字符串 的值,可以對編輯框中的內(nèi)容進行編輯、刪除和替換等操作;25靜態(tài)文本框(Static Texts):僅用于顯示單行的說明文字;滾動條(Slider): 可輸入指定范圍的數(shù)量值;邊框(Frames):在圖形窗口圈出一塊區(qū)域;列表框(List Boxes):在其中定義一系列可供選擇的字符串

13、;彈出式菜單(Popup Menus): 讓用戶從一列菜單項中選擇一項作為參數(shù)輸入;此外還有坐標(biāo)軸(Axes), 用于顯示圖形和圖象。26 用戶可以在創(chuàng)建控件對象時,設(shè)定其屬性值,未指定時將使用系統(tǒng)缺省值。3. 控件對象的屬性(Attributes of controller object) 兩大類控件對象屬性:第一類是所有控件對象都具有的公共屬性,第二類是控件對象作為圖形對象所具有的屬性。27控件對象的公共屬性Children 取值為空矩陣,因為控件對象沒有自己的子對象;Tag取值為字符串,定義了控件的標(biāo)識值,在任何程序中都可以通過這個標(biāo)識值控制該控件對象;Type 取值為uicontrol

14、,表明圖形對象的類型;Visible取值為on 或off。UserDate取值為空矩陣,用于保存與該控件對象相關(guān)的重要數(shù)據(jù)和信息;Parent取值為某個圖形窗口對象的句柄,該句柄表明了控件對象所在的圖形窗口;28控件的常用屬性創(chuàng)建控件以后,需要對控件的各種屬性進行設(shè)置,大部分控件都具有以下屬性。(1)string屬性:用于顯示在控件上的字符串,起說明或提示作用。(2)callback屬性:回調(diào)函數(shù),與菜單的一樣。(3)enable屬性:表示該控件是否有效,”on“表示有效,”off“表示無效。(4)tooltipstring屬性:當(dāng)鼠標(biāo)放在控件上時顯示提示信息,為字符串。(5)字體屬性:包括f

15、ontname,fontsize等。(6)Tag屬性:控件的標(biāo)記,用于標(biāo)識控件。 29BackgroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值;缺省值為淺灰色;Callback取值為字符串,可以是某個M文件名或一小段Matlab語句,當(dāng)用戶激活某個控件對象時,應(yīng)用程序就運行該屬性定義的子程序;Enable取值為on(缺省值),inactive和off;Extend取值為四元素矢量0, 0, width, height,記錄控件對象標(biāo)題字符的位置和尺寸;ForegroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值,該屬性定義控件對象標(biāo)題字符的顏色;缺省值為黑色;Max,Min取值都為

16、數(shù)值,缺省值分別為1和0;String取值為字符串矩陣或塊數(shù)組,定義控件對象標(biāo)題或選項內(nèi)容;Style取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox;Units取值可以是pixels (缺省值), normalized(相對單位), inches, centimeters(厘米)或points(磅);Value取值可以是矢量,也可以是數(shù)值,其含義及解釋依賴于控件對象的類型??丶ο蟮幕究刂茖傩?0FontAngle取值為normal(正體,缺省值), ital

17、ic(斜體), oblique(方頭);FontName取值為控件標(biāo)題等字體的字庫名;FontSize取值為數(shù)值;FontUnits取值為points(缺省值), normalized, inches, centimeters或pixels;FontWeight取值為normal(缺省值), light,demi和bold,定義字符的粗細(xì);HorizontalAligment取值為left,center (缺省值) 或 right,定義控件對象標(biāo)題等的對齊方式??丶ο蟮男揎椏刂茖傩?1ListboxTop取值為數(shù)量值,用于listbox控件對象;SliderStep取值為兩元素矢量minst

18、ep,maxstep,用于slider控件對象;Selected取值為on 或off(缺省值) ;SlectionHoghlight取值為on 或off(缺省值) ??丶ο蟮妮o助屬性BusyAction取值為cancel或queue(缺省值) ;ButtDownFun取值為字符串,一般為某個M文件名或一小段Matlab程序;Creatfun 取值為字符串,一般為某個M文件名或一小段Matlab程序;DeletFun取值為字符串,一般為某個M文件名或一小段Matlab程序;HandleVisibility取值為on(缺省值), callback或off;Interruptible取值為on 或

19、off(缺省值) 。Callback管理屬性32對象對齊工具、屬性編輯器和對象瀏覽器對象對齊工具用來將用戶界面的多個控件對齊;通過對象瀏覽器可以查看用戶界面中的所有對象;在屬性編輯器中可以設(shè)置和查看對象的各種屬性。33回調(diào)函數(shù) 實現(xiàn)GUI的基本機制是對控件的屬性編程。在設(shè)計界面中選定需要編寫回調(diào)函數(shù)的對象,然后選擇菜單”View”“Object Callbacks”,就會出現(xiàn)4個子菜單,都是用來編寫回調(diào)函數(shù)的。 當(dāng)選擇各選單項時,MATLAB會提醒用戶保存設(shè)計的界面,然后打開M文件編輯器/調(diào)試器,可看到機器自動生成了一個函數(shù)文件,用戶即可在該文件中帶%標(biāo)記的行填寫回調(diào)指令,其余指令用戶不必也不

20、能更改。34回調(diào)函數(shù)CreateFcn是控件對象創(chuàng)建的時候發(fā)生DeleteFcn是在空間對象被清除時候發(fā)生ButtonDownFcn鼠標(biāo)點擊時發(fā)生KeyPressFcn按鍵時發(fā)生 35設(shè)計一個GUI界面的步驟(1)界面布局設(shè)計通過拖拽控件面板中的控件到界面設(shè)計區(qū)中;然后使用對象對齊工具(Align Objects)進行控件的布局調(diào)整,使用Tab順序編輯器(Tab Order Editor)對各控件的Tab順序進行較好地設(shè)置;如果界面需要菜單,則使用菜單編輯器(Menu Editor)進行菜單的設(shè)計;添加完控件后在對象瀏覽器(Object Browser)中就可以看到所有的圖形對象,完成界面的布

21、局設(shè)計。(2)屬性設(shè)置打開屬性編輯器(Property Inspector)對相關(guān)的屬性進行修改 。(3)編寫回調(diào)函數(shù)363 圖形用戶界面設(shè)計工具應(yīng)用簡單的圖形用戶界面設(shè)計實例例1 創(chuàng)建一個用戶界面,實現(xiàn)單擊按鈕在坐標(biāo)軸中繪制正弦曲線的功能,運行界面如圖所示。(1)創(chuàng)建一個空白的GUI界面(2)創(chuàng)建控件(3)調(diào)整控件布局(4)設(shè)置各控件的Tab順序(5)設(shè)置控件的屬性(6)編寫回調(diào)函數(shù)(7)運行GUI界面程序373 圖形用戶界面設(shè)計工具應(yīng)用【例2】 利用GUI工具設(shè)計用戶界面。該界面具有以下功能:(1)在編輯框中,可輸入數(shù)據(jù),在按【enter】鍵后,在軸上畫出相應(yīng)的藍色曲線。(2)在點擊【Gr

22、id on】或【Grid off】鍵時,在軸上 畫出或刪除“分格線”;缺省時無分格線。(3)在菜單【Options】下,有2個下拉菜單【Box on】和【Box off】;缺省時為Box off狀態(tài)。(4)所設(shè)計的界面和其上圖形對象、控件對象都按比例縮放。38圖形用戶界面設(shè)計工具應(yīng)用(續(xù))界面最終效果圖如下所示:39圖形用戶界面設(shè)計工具應(yīng)用(續(xù)) 由于本例的設(shè)計界面清晰、要求明確,所以無需進行功能分析和繪制草圖,而可直接進入界面制作階段。40圖形用戶界面設(shè)計工具應(yīng)用(續(xù)) 使用“guide”命令啟動GUI界面,選擇“Blank GUI”出現(xiàn)GUI設(shè)計工作臺,調(diào)整圖形大小,將界面窗口左邊的控件模

23、板區(qū)中的控件拖放到設(shè)計工作區(qū)中。 放置以下控件:一個坐標(biāo)軸、兩個靜態(tài)文本框、一個可編輯文本框、兩個按鈕;然后打開對象對齊工具對齊各控件,界面布局如下圖。 41圖形用戶界面設(shè)計工具應(yīng)用(續(xù))42圖形用戶界面設(shè)計工具應(yīng)用(續(xù))2. 設(shè)置控件屬性 雙擊工作區(qū)及控件可引出圖形窗和相應(yīng)控件的“屬性編輯框(Property Inspector)”。 在圖形窗的屬性編輯框中,設(shè)置如下屬性值:Name guil2 %圖形窗的名稱Resize on %圖形窗可以縮放Tag figuer1 %生成handles.figure1域存放圖形窗句柄43圖形用戶界面設(shè)計工具應(yīng)用(續(xù))在軸屬性編輯框中,設(shè)置如下屬性值:Un

24、its normalized %使得所有新建對象隨所在圖形窗按比例縮放Box off %坐標(biāo)軸不封閉Tag axes1 %生成handles.axes1域存放軸句柄XLim 0,15 %X軸范圍YLim 0,2 %Y軸范圍44圖形用戶界面設(shè)計工具應(yīng)用(續(xù))在圖形區(qū)上方的靜態(tài)文本的屬性編輯框中,設(shè)置如下屬性值:Fontsize 0.7 %字體大小FontUnits normaliszed %采用相對度量單位,縮放時保持字體比例String 響應(yīng)曲線 %顯示在界面上的字符Tag title_text %生成handles.title_text域存放靜態(tài)文本句柄HorizontalAlignment

25、 Center %文字中心對齊Units normalized %采用相對度量單位,縮放時保持該區(qū)比例45圖形用戶界面設(shè)計工具應(yīng)用(續(xù))注: Units或FontUnits可選擇:inches(英寸),centimeters (厘米), normalized(按比例縮放),points(點陣), pixels (像素), characters(字符)。如果選擇normalized,那么當(dāng)resize設(shè)為on時,控件或字體大小隨著整個窗口的縮放而改變。 水平對齊方式 HorizontalAlignment可以是left, center, right。 控件句柄Tag有默認(rèn)值,建議修改為帶有具體含

26、義的字符串,以增加程序可讀性和方便回調(diào)函數(shù)調(diào)用。46圖形用戶界面設(shè)計工具應(yīng)用(續(xù))在可編輯文本上方的靜態(tài)文本的屬性編輯框中,設(shè)置如下屬性值:Fontsize 0.5 %字體大小FontUnits normaliszed %采用相對度量單位,縮放時保持字體比例HorizontalAlignment Center %文字中心對齊String 輸入數(shù)據(jù) %顯示在界面上的字符Tag edit_text %生成handles.edit_text域存放靜態(tài)文本句柄Units normalized %采用相對度量單位,縮放時保持該區(qū)比例47圖形用戶界面設(shè)計工具應(yīng)用(續(xù))在可編輯文本的屬性編輯框中,設(shè)置如下屬

27、性值:Fontsize 0.6 %字體大小FontUnits normaliszed %采用相對度量單位,縮放時保持字體比例HorizontalAlignment Center %文字中心對齊String %在界面上顯示為空白Tag zeta_edit %生成handles.zeta_edit域存放彈出式選單句柄Units normalized %采用相對度量單位,縮放時保持該區(qū)比例48圖形用戶界面設(shè)計工具應(yīng)用(續(xù))在上按鍵的屬性編輯框中,設(shè)置如下屬性值:Fontsize 0.5 %字體大小FontUnits normaliszed %采用相對度量單位,縮放時保持字體比例HorizontalA

28、lignment Center %文字中心對齊String Grid on %在按鍵上顯示Grid onTag GridOn_push %生成handles.GridOn_push域存放該鍵句柄Units normalized %采用相對度量單位,縮放時保持該鍵比例49圖形用戶界面設(shè)計工具應(yīng)用(續(xù))在下按鍵的屬性編輯框中,設(shè)置如下屬性值:Fontsize 0.5 %字體大小FontUnits normaliszed %采用相對度量單位,縮放時保持字體比例HorizontalAlignment Center %文字中心對齊String Grid off %在按鍵上顯示Grid offTag Gr

29、idOff_push %生成handles.GridOff_push域存放該鍵句柄Units normalized %采用相對度量單位,縮放時保持該鍵比例50圖形用戶界面設(shè)計工具應(yīng)用(續(xù))3. 精細(xì)調(diào)整控件的大小及其相對位置 直接拖拉控件調(diào)整其大??;通過對象對齊工具將控件擺放整齊。4. 創(chuàng)建菜單 點擊“菜單編輯器”圖標(biāo),引出空白菜單編輯對話窗,再點擊該對話窗最左上方的“新菜單New Menu”圖標(biāo),在左側(cè)空白窗口中,出現(xiàn)”Untitled1”圖標(biāo);點擊此圖標(biāo)則在右側(cè)引出填寫欄,在“l(fā)able”中填寫Options;在“Tag”中填寫options,于是左側(cè)的”Untitled1”圖標(biāo)變成“Op

30、tions”圖標(biāo),表示此菜單已生成。51圖形用戶界面設(shè)計工具應(yīng)用(續(xù))先點亮左側(cè)的“Option”圖標(biāo),再點擊菜單編輯對話窗上的“新菜單項New Menu Item”圖標(biāo),就引出等待定義的菜單項;在右側(cè)的“Label”中填寫B(tài)ox on,在“Tag”中填寫box_on。重復(fù)該小步操作,建立另一個菜單項Box off。 注意:菜單編輯對話窗上的“Callback”不要填寫,機器自動生成。52圖形用戶界面設(shè)計工具應(yīng)用(續(xù))5. 界面的激活和回調(diào)函數(shù)的生成 點擊工作臺上的”運行界面“的工具圖標(biāo),會出現(xiàn)一個詢問對話框,當(dāng)按提示對以上的設(shè)計進行存儲以后,就會引出2個界面:名為guil2的(待激活的)圖形

31、用戶界面;展示名為guil2的(待填寫回調(diào)指令的)M函數(shù)文件的文件編輯器界面。同時,在當(dāng)前目錄或給定目錄上,由MATLAB自動生成了2個文件,即guil2.fig和guil2.m。53圖形用戶界面設(shè)計工具應(yīng)用(續(xù))在guil2.m文件中,填寫回調(diào)指令:function zeta_edit_Callback(hObject, eventdata, handles)%hObject為發(fā)生事件的源控件% eventdata為事情數(shù)據(jù)結(jié)構(gòu)% handles為傳入對象句柄z=str2num(get(handles.zeta_edit,String) %從編輯框中獲取zeta數(shù)據(jù)y=2*exp(-0.5*

32、z).*sin(2*pi*z); plot(z,y);54圖形用戶界面設(shè)計工具應(yīng)用(續(xù))Function varargout=GridOn_push_Callback(hObject, eventdata, handles,varargin)grid on %配合Grid on 按鍵操作的指令function varargout=GridOff_push_Callback(hObject, eventdata, handles,varargin)grid off % 配合Grid off 按鍵操作的指令55圖形用戶界面設(shè)計工具應(yīng)用(續(xù))function varargout=box_on_Cal

33、lback(hObject, eventdata, handles,varargin)box on %配合菜單Box on的操作指令set(handles.box_on,enable,off) %使菜單項Box on失能set(handles.box_off,enable,on) %使菜單項Box off使能56圖形用戶界面設(shè)計工具應(yīng)用(續(xù))function varargout=box_off_Callback(hObject, eventdata, handles,varargin)box off %配合菜單Box off的操作指令set(handles.box_off,enable,off

34、) %使菜單項Box off 失能 set(handles.box_on,enable,on) %使菜單項Box on 使能57圖形用戶界面設(shè)計工具應(yīng)用(續(xù))注意:在填寫回調(diào)函數(shù)時,只有帶%標(biāo)記的那些行指令是用戶為滿足設(shè)計要求而填寫的,其余指令都是機器自動生成的,用戶不必也不能更改6. 圖形用戶界面的使用 經(jīng)過以上幾個步驟生成的圖形用戶界面已經(jīng)可以使用了,只要Myguil.m和Myguil.fig在當(dāng)前目錄或在MATLAB搜索路徑上,那么在指令窗運行Myguil就能使用該界面。生成的界面如下圖所示:58圖形用戶界面設(shè)計工具應(yīng)用(續(xù))59圖形用戶界面設(shè)計工具應(yīng)用(續(xù))例2 設(shè)計一個GUI,實現(xiàn)計

35、算器的功能步驟一:界面功能分析 該計算器能完成數(shù)字的四則運算及部分常用的科學(xué)計算,如sin,cos,log等。步驟二:繪界面草圖 可有多種風(fēng)格的界面。60圖形用戶界面設(shè)計工具應(yīng)用(續(xù))草圖一:數(shù)值顯示區(qū)(參加計算的數(shù)值及計算結(jié)果)數(shù)字按鈕(09十個數(shù)字及小數(shù)點)代表+,-,*,/的計算按鈕開始計算及清零按鈕61圖形用戶界面設(shè)計工具應(yīng)用(續(xù))草圖二:計算式第一個數(shù)字的編輯顯示計算式兩個數(shù)字間的計算關(guān)系計算式第二個數(shù)字的編輯顯示計算結(jié)果顯示區(qū)代表+,-,*,/等運算的按鈕開始計算及清零按鈕62圖形用戶界面設(shè)計工具應(yīng)用(續(xù))草圖三:表達式編輯顯示區(qū)(格式和MATLAB命令相同)計算結(jié)果顯示區(qū)開始計算

36、及清零按鈕63圖形用戶界面設(shè)計工具應(yīng)用(續(xù))步驟三:設(shè)計界面( 選擇草圖一)初步布局 打開GUI工作臺,通過用鼠標(biāo)拖拉“工作區(qū)”右下角的“小黑塊”使工作區(qū)的大小合適,然后根據(jù)草圖從控件選擇區(qū)選擇相應(yīng)的控件拖拉到工作區(qū)的相應(yīng)位置。效果圖如下頁所示:64圖形用戶界面設(shè)計工具應(yīng)用(續(xù))65圖形用戶界面設(shè)計工具應(yīng)用(續(xù))2. 修改控件屬性1)雙擊設(shè)計工作區(qū)的空白部分,打開圖形窗的屬性框,設(shè)置屬性如下: MenuBar none %圖形窗不使用標(biāo)準(zhǔn)菜單 Name Experiment1 %圖形窗名稱 Resize off %圖形窗不能縮放 Tag mainWnd %生成handles.mainWnd域存

37、放圖形窗句柄66圖形用戶界面設(shè)計工具應(yīng)用(續(xù))2)靜態(tài)文本編輯框的屬性設(shè)置。以”expression”文本框為例: FontSize 15 %字體大小 Fontunits point % 字體大小的度量單位 HorizontalAlignment Center %對齊方式 String Expression %待顯示的字符 Tag text1 %生成handles.text1存放該靜態(tài)文本框的句柄 Units point %文本框度量單位 67圖形用戶界面設(shè)計工具應(yīng)用(續(xù))3)可編輯文本框的屬性設(shè)置 Sting 0 %初始狀態(tài)下顯示數(shù)字0 Tag pExp %可編輯文本框的句柄 其它與靜態(tài)文本

38、框相同68圖形用戶界面設(shè)計工具應(yīng)用(續(xù))4)單功能按鈕屬性設(shè)置。以按鈕“1”為例: String 1 Tag p1其它和靜態(tài)文本框相同。69圖形用戶界面設(shè)計工具應(yīng)用(續(xù))3. 創(chuàng)建菜單 創(chuàng)建一個“操作”菜單,帶兩個下拉選單“計算”和“清零”。70圖形用戶界面設(shè)計工具應(yīng)用(續(xù))步驟四:激活界面,填寫回調(diào)函數(shù) 保存靜態(tài)界面后,利用工具欄上的運行界面按鈕激活界面,同時,機器自動生成了guil.fig和guil.m兩個文件。 打開guil.m文件,可看到自動生成的回調(diào)函數(shù),該函數(shù)的命名利用對象句柄進行區(qū)分,沒有任何執(zhí)行語句。71圖形用戶界面設(shè)計工具應(yīng)用(續(xù))回調(diào)函數(shù):Tag_Callback(hObj

39、ect,eventdata,handles) 通過加入自己的處理語句,才可實現(xiàn)所需的功能。 其中,hObject是該控件的句柄;evendata是備用參數(shù),目前沒有定義;handles是用戶數(shù)據(jù),本身是一個構(gòu)架數(shù)組,存放了當(dāng)前窗口所有對象的句柄,包括圖形窗本身、所有控件和菜單的句柄,并且可以增加一些域用來傳遞用戶數(shù)據(jù)。 利用guidata(H,handles)可以更新H的用戶數(shù)據(jù)。對本例來說,先需要定義幾個用戶變量,以便記錄參加運算的數(shù)值,進行計算。72圖形用戶界面設(shè)計工具應(yīng)用(續(xù))function guil_OpeningFcn(hObject, eventdata, handles, va

40、rargin)handles.output = hObject;handles.s_Exp=; %以字符串的形式記錄計算表達式handles.s_Num=; %以字符串的形式記錄編輯框中要顯示的數(shù)值handles.i=1;% s_Exp的計數(shù)器handles.j=1;% s_Num的計數(shù)器handles.flag=0; %用來區(qū)分四則運算和函數(shù)運算的標(biāo)志% Update handles structureguidata(hObject, handles);73圖形用戶界面設(shè)計工具應(yīng)用(續(xù))數(shù)字按鈕的回調(diào)函數(shù),以數(shù)字1按鈕的回調(diào)函數(shù)為例function p1_Callback(hObject, eventdata, handles)handles.s_Exp(handles.i)=1;handles.s_Num(handles.j)=1;handles.i=handles.i+1;handles.j=handles.j+1;guidata(handles.mainWnd,handles);set(handles.pExp,s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論