版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第10章
APP設(shè)計(jì)【本章學(xué)習(xí)目標(biāo)】
掌握?qǐng)D形用戶界面設(shè)計(jì)的方法。熟悉控件的常用屬性。掌握GUIDE的使用。掌握GUI回調(diào)函數(shù)的定義方法。掌握App設(shè)計(jì)工具的使用。第10章
APP設(shè)計(jì)【本章學(xué)習(xí)目標(biāo)】
掌握?qǐng)D形用戶界面設(shè)計(jì)的10.1圖形用戶界面1.控件(Controls)(1)按鈕。一個(gè)按鈕代表一種操作,也稱為命令按鈕。(2)滑動(dòng)條。用戶可以通過移動(dòng)滑塊來改變滑動(dòng)條對(duì)象的值。(3)單選按鈕。當(dāng)被選中時(shí),圓圈的中心有一個(gè)實(shí)心的黑點(diǎn),否則圓圈為空白。在一組單選按鈕中,只能有一個(gè)被選中。(4)復(fù)選框。被選中的項(xiàng)其小方框中有√。復(fù)選框一次可以選擇多項(xiàng)。(5)可編輯文本。供用戶輸入數(shù)據(jù)用。編輯框內(nèi)輸入的是字符,參與算術(shù)運(yùn)算前需要轉(zhuǎn)換為對(duì)應(yīng)的數(shù)。(6)靜態(tài)文本。一般用作其他控件的標(biāo)簽、提示。10.1.1用戶界面對(duì)象概述10.1圖形用戶界面1.控件(Controls)10.110.1圖形用戶界面2.菜單(Menus)通過使用菜單,可以把對(duì)程序的各種操作命令非常規(guī)范有效地呈現(xiàn)給用戶,單擊菜單項(xiàng)程序?qū)?zhí)行相應(yīng)的功能。菜單對(duì)象是圖形窗口的子對(duì)象。快捷菜單(ContextMenu)是用鼠標(biāo)右鍵單擊某對(duì)象時(shí)在屏幕上彈出的菜單。也稱為上下文菜單。10.1.1用戶界面對(duì)象概述10.1圖形用戶界面2.菜單(Menus)10.1.110.1圖形用戶界面3.工具欄(Toolbars)工具欄以圖標(biāo)方式提供了常用命令的快速訪問按鈕。10.1.1用戶界面對(duì)象概述10.1圖形用戶界面3.工具欄(Toolbars)10.10.1圖形用戶界面1.外觀控制屬性(1)Style屬性。用于定義控件對(duì)象的類型。(2)Tag屬性。用于定義控件標(biāo)識(shí)。(3)String屬性。用于定義控件對(duì)象的說明文字。(4)Enable屬性。用于控制控件對(duì)象是否可用,取值是’on’(默認(rèn)值)或’off’。(5)HorizontalAlignment屬性。用于設(shè)置說明文字的水平對(duì)齊方式,可取值為'center'(默認(rèn)值)、'left'或'right'。(6)BackgroundColor用于定義控件對(duì)象區(qū)域的背景色,默認(rèn)值為[.94.94.94](淺灰色);ForegroundColor屬性用于定義控件對(duì)象說明文字的顏色,默認(rèn)為黑色。10.1.2控件的公共屬性10.1圖形用戶界面1.外觀控制屬性10.1.2控件10.1圖形用戶界面1.外觀控制屬性(7)Position屬性。用于定義控件對(duì)象在用戶界面中的位置和大小,屬性值是一個(gè)4元向量[n1,n2,n3,n4]。n1和n2分別為控件對(duì)象左下角相對(duì)于父對(duì)象的x、y坐標(biāo),n3和n4分別為控件對(duì)象的寬度和高度。(8)Max、Min屬性。用于指定控件對(duì)象的最大值和最小值,默認(rèn)值分別是1和0。
(9)Value屬性。用于獲取和設(shè)置控件對(duì)象的當(dāng)前值。(10)UserData屬性。用于存儲(chǔ)與控件對(duì)象關(guān)聯(lián)的數(shù)據(jù),默認(rèn)為空數(shù)組。10.1.2控件的公共屬性10.1圖形用戶界面1.外觀控制屬性10.1.2控件10.1圖形用戶界面2.事件響應(yīng)屬性(1)Callback屬性。屬性值是描述命令的字符串或函數(shù)句柄,當(dāng)單擊控件時(shí),系統(tǒng)將自動(dòng)執(zhí)行字符串描述的命令或調(diào)用句柄所代表的函數(shù),實(shí)施相關(guān)操作。(2)ButtonDownFcn屬性:用于定義在控件對(duì)象上單擊鼠標(biāo)左鍵時(shí)執(zhí)行的命令。(3)KeyPressFcn屬性。用于定義在控件對(duì)象上按下鍵盤鍵時(shí)執(zhí)行的命令。(4)KeyReleaseFcn屬性。用于指定在控件對(duì)象上按下鍵盤鍵后釋放時(shí)執(zhí)行的命令。(5)CreateFcn屬性:用于指定在建立控件對(duì)象時(shí)執(zhí)行的命令。(6)DeleteFcn屬性:用于指定刪除控件對(duì)象時(shí)執(zhí)行的命令。10.1.2控件的公共屬性10.1圖形用戶界面2.事件響應(yīng)屬性10.1.2控件10.1圖形用戶界面1.事件驅(qū)動(dòng)機(jī)制面向?qū)ο蟮某绦蛟O(shè)計(jì)是以對(duì)象感知事件的過程為編程單位,當(dāng)事件發(fā)生時(shí),相應(yīng)的程序段才會(huì)運(yùn)行。事件是由用戶或操作系統(tǒng)引發(fā)的動(dòng)作。gcbo命令用于獲取正在執(zhí)行回調(diào)的對(duì)象句柄。10.1.3回調(diào)函數(shù)10.1圖形用戶界面1.事件驅(qū)動(dòng)機(jī)制10.1.3回調(diào)10.1圖形用戶界面2.回調(diào)函數(shù)回調(diào)函數(shù)定義對(duì)象怎樣處理信息并響應(yīng)某事件,該函數(shù)不會(huì)主動(dòng)運(yùn)行,是由主控程序調(diào)用的?;卣{(diào)函數(shù)的基本結(jié)構(gòu):function回調(diào)函數(shù)名(source,eventdata)……end參數(shù)source是發(fā)生事件的源對(duì)象句柄,eventdata存儲(chǔ)事件數(shù)據(jù)。10.1.3回調(diào)函數(shù)10.1圖形用戶界面2.回調(diào)函數(shù)10.1.3回調(diào)函數(shù)10.1圖形用戶界面【例10.1】繪制[0,2π]的正弦曲線,當(dāng)在曲線上單擊鼠標(biāo)左鍵時(shí),將曲線線條顏色改為紅色。首先定義回調(diào)函數(shù)setlinecolor。functionsetlinecolor(source,~)source.Color='r';end將上述函數(shù)保存為函數(shù)文件setlinecolor.m。然后在命令窗口執(zhí)行以下命令。>>x=linspace(0,2*pi,50);>>h=plot(x,sin(x));>>h.ButtonDownFcn=@setlinecolor;10.1圖形用戶界面【例10.1】繪制[0,2π]的正弦10.2GUI函數(shù)函數(shù)uicontrol用于建立控件對(duì)象的,調(diào)用格式為h=uicontrol(parent,屬性1,屬性值1,屬性2,屬性值2,…)參數(shù)parent用于指定控件對(duì)象的容器(即父對(duì)象),屬性及其取值決定了控件對(duì)象的特征。例如,在圖形窗口上放置一個(gè)滑動(dòng)條:10.2.1建立控件對(duì)象fh=figure('position',[100,200,320,160]);sh=uicontrol(fh,'Style','slider',...'Max',100,'Min',0,'Value',25,...'SliderStep',[0.050.2],...'Position',[6010015030]);10.2GUI函數(shù)函數(shù)uicontrol用于建立控件對(duì)象10.2GUI函數(shù)uibuttongroup函數(shù)、uipanel函數(shù)、uitoolbar函數(shù),分別用于建立按鈕組、面板、工具欄,調(diào)用格式為h=uibuttongroup(parent,屬性1,屬性值1,屬性2,屬性值2,…)h=uipanel(parent,屬性1,屬性值1,屬性2,屬性值2,…)h=uitoolbar(parent,屬性1,屬性值1,屬性2,屬性值2,…)10.2.1建立控件對(duì)象>>fh=figure;>>bg=uibuttongroup(fh,'Position',[0.1,0.1,0.5,0.1]);>>r1=uicontrol(bg,'Style','radiobutton',...'String','選項(xiàng)A',...'Position',[101010030]);>>r2=uicontrol(bg,'Style','radiobutton',...'String','選項(xiàng)B',...'Position',[1101010030],...'Value',1);10.2GUI函數(shù)uibuttongroup函數(shù)、uip10.2GUI函數(shù)1.創(chuàng)建菜單MATLAB提供了uimenu函數(shù)來創(chuàng)建、設(shè)置、修改菜單。函數(shù)調(diào)用格式為m=uimenu(parent,屬性1,屬性值1,屬性2,屬性值2,…)建立菜單時(shí),parent為圖形窗口的句柄,默認(rèn)在當(dāng)前圖形窗口中建立這個(gè)菜單。10.2.2建立用戶菜單>>hm=uimenu(gcf,'Label','文件');>>hm1=uimenu(hm,'Label','打開');>>hm2=uimenu(hm,'Label','新建');>>hm3=uimenu(hm,'Label','保存');>>hm21=uimenu(hm2,'Label','圖形窗口');>>hm22=uimenu(hm2,'Label','坐標(biāo)軸');MATLAB圖形窗口帶有默認(rèn)菜單,若不需要圖形窗口的默認(rèn)菜單為了建立用戶自己的菜單系統(tǒng),可以先將圖形窗口的MenuBar屬性設(shè)置為none。10.2GUI函數(shù)1.創(chuàng)建菜單10.2.2建立用戶菜10.2GUI函數(shù)2.菜單屬性菜單對(duì)象除具有Children、Parent、Tag等公共屬性外,還有一些特殊屬性。Label屬性:用于定義菜單項(xiàng)上顯示的文字。Accelerator屬性:用于定義菜單項(xiàng)的快捷鍵。Checked屬性:指示菜單項(xiàng)是否已選中。Enable屬性:控制菜單項(xiàng)的可選擇性。Separator屬性:在菜單項(xiàng)上方添加一條分隔線。10.2.2建立用戶菜單10.2GUI函數(shù)2.菜單屬性10.2.2建立用戶菜10.2GUI函數(shù)(1)uicontextmenu函數(shù)用于建立快捷菜單,函數(shù)調(diào)用格式為m=uicontextmenu(parent,屬性1,屬性值1,屬性2,屬性值2,…)(2)利用uimenu函數(shù)為快捷菜單建立下一級(jí)菜單項(xiàng)。(3)通過圖形對(duì)象的UIContextMenu屬性將快捷菜單與圖形對(duì)象關(guān)聯(lián)。10.2.3建立快捷菜單10.2GUI函數(shù)(1)uicontextmenu函數(shù)用10.2GUI函數(shù)
建立腳本文件menudemo.m,程序如下:symst;x=sin(t)+sin(2*t);y=cos(t)-cos(2*t);hf=figure('Name','快捷菜單演示');hl=fplot(x,y,'Tag','myline');hc=uicontextmenu;%建立快捷菜單%建立一級(jí)菜單項(xiàng)hcs=uimenu(hc,'Text','線型');hcc=uimenu(hc,'Text','線條顏色');%建立二級(jí)菜單項(xiàng)uimenu(hcs,'Text','虛線','Tag',':','CallBack',@LineStatus)uimenu(hcs,'Text','實(shí)線','Tag','-','CallBack',@LineStatus);uimenu(hcc,'Text','紅','Tag','r','CallBack',@LineStatus);uimenu(hcc,'Text','黑','Tag','k','CallBack',@LineStatus);%將該快捷菜單和曲線對(duì)象關(guān)聯(lián)hl.UIContextMenu=hc;10.2GUI函數(shù)
建立腳本文件menudemo.m,程10.2GUI函數(shù)
建立函數(shù)文件LineStatus.m,定義回調(diào)函數(shù)。functionLineStatus(source,~)h=findobj('Tag','myline');ifsource.Parent.Text=="線條顏色"h.Color=source.Tag;elseifsource.Parent.Text=="線型"h.LineStyle=source.Tag;end10.2GUI函數(shù)
建立函數(shù)文件LineStatus.m10.3GUIDE1.打開GUIDE打開GUIDE有兩種方法:(1)在MATLAB桌面,選擇“主頁”選項(xiàng)卡,單擊工具欄的“新建”命令按鈕,,從彈出的命令列表中選“App”下的命令項(xiàng)“GUIDE”。(2)在MATLAB命令行窗口輸入guide命令。10.3.1GUIDE簡介10.3GUIDE1.打開GUIDE10.3.1GU10.3GUIDE2.界面編輯器窗口10.3.1GUIDE簡介工具欄菜單欄組件選項(xiàng)板界面設(shè)計(jì)區(qū)狀態(tài)欄10.3GUIDE2.界面編輯器窗口10.3.1GU10.3GUIDE3.回調(diào)屬性用于定義對(duì)象怎樣處理信息并響應(yīng)事件。在GUIDE中,按鈕類控件和菜單項(xiàng)的單擊事件的默認(rèn)回調(diào)屬性是Callback;其他圖形對(duì)象的回調(diào)屬性還有ButtonDownFcn、KeyPressFcn、SelectionChangeFcn等。在GUIDE中,控件的回調(diào)屬性值默認(rèn)為“%automatic”,即自動(dòng)使用默認(rèn)的回調(diào)方法。GUIDE自動(dòng)生成的回調(diào)函數(shù)頭格式為:functionpushbutton1_Callback(hObject,eventdata,handles)hObject存儲(chǔ)事件觸發(fā)的源控件eventdata存儲(chǔ)事件數(shù)據(jù)handles存儲(chǔ)用戶界面中所有對(duì)象的句柄。
10.3.1GUIDE簡介10.3GUIDE3.回調(diào)屬性10.3.1GUIDE10.3GUIDE例如,用戶界面中有一個(gè)按鈕對(duì)象pushbutton1和1個(gè)靜態(tài)文本對(duì)象text1,若運(yùn)行時(shí)單擊按鈕pushbutton1,使text1上顯示“Hello,World”,則在回調(diào)函數(shù)pushbutton1_Callback的函數(shù)體中加入以下語句:handles.text1.String='Hello,World';例如,在回調(diào)函數(shù)pushbutton1_Callback的函數(shù)體中加入以下語句:handles.mydata="Thisisanexample.";guidata(hObject,handles);在pushbutton2_Callback的函數(shù)體中加入以下語句,在對(duì)象text1上顯示上述字符串:handles.text1.String=handles.mydata;10.3GUIDE例如,用戶界面中有一個(gè)按鈕對(duì)象push10.3GUIDE1.屬性檢查器(PropertyInspector)用于查看、設(shè)置用戶界面中各個(gè)對(duì)象的屬性。雙擊某個(gè)對(duì)象,或選中對(duì)象后,單擊編輯器工具欄的“屬性檢查器”按鈕(或從“視圖”菜單中選菜單項(xiàng)“屬性檢查器”),打開屬性檢查器。在MATLAB命令行窗口輸入命令“inspect”,打開屬性檢查器。10.3.2界面設(shè)計(jì)工具10.3GUIDE1.屬性檢查器(PropertyIn10.3GUIDE2.菜單編輯器(MenuEditor)用于創(chuàng)建、設(shè)置、修改下拉式菜單和快捷菜單。(1)創(chuàng)建菜單10.3.2界面設(shè)計(jì)工具10.3GUIDE2.菜單編輯器(MenuEditor10.3GUIDE2.菜單編輯器(MenuEditor)菜單/菜單項(xiàng)的主要屬性。
Label(標(biāo)簽)屬性。用于定義菜單項(xiàng)的上顯示的文字。若在字符串中加入“&”字符,則跟隨在“&”后的字符有一條下劃線。對(duì)于這種帶有下劃線字符的菜單/菜單項(xiàng),可以用Alt+該字符鍵來激活。
Tag(標(biāo)記)屬性。作為菜單項(xiàng)的標(biāo)識(shí)。
Callback(回調(diào))屬性。該屬性的取值是函數(shù)句柄,或用字符串描述的MATLAB命令。用戶界面運(yùn)行時(shí),若單擊某菜單項(xiàng),MATLAB將自動(dòng)調(diào)用該菜單項(xiàng)回調(diào)屬性中定義的函數(shù)或命令。10.3.2界面設(shè)計(jì)工具10.3GUIDE2.菜單編輯器(MenuEditor10.3GUIDE3.工具欄編輯器(ToolbarEditor)創(chuàng)建、設(shè)置、修改工具欄。10.3.2界面設(shè)計(jì)工具10.3GUIDE3.工具欄編輯器(ToolbarEd10.3GUIDE4.對(duì)齊對(duì)象工具(AlignObjects)用于調(diào)整設(shè)計(jì)區(qū)內(nèi)的對(duì)象位置。10.3.2界面設(shè)計(jì)工具10.3GUIDE4.對(duì)齊對(duì)象工具(AlignObje10.3GUIDE5.對(duì)象瀏覽器(ObjectBrowser)對(duì)象瀏覽器用于查看界面所包含的圖形對(duì)象和展示界面的組織架構(gòu)。10.3.2界面設(shè)計(jì)工具10.3GUIDE5.對(duì)象瀏覽器(ObjectBrow10.3GUIDE6.Tab鍵順序編輯器(TabOrderEditor)利用Tab鍵順序編輯器,可以設(shè)置用戶按鍵盤上的Tab鍵時(shí),用戶界面上的對(duì)象被激活的先后順序。10.3.2界面設(shè)計(jì)工具10.3GUIDE6.Tab鍵順序編輯器(TabOrd10.3GUIDE【例10.3】利用GUIDE設(shè)計(jì)工具設(shè)計(jì)如圖10.9所示的用戶界面。該界面可以顯示表面圖、網(wǎng)格圖和等高線圖。繪制圖形的功能通過3個(gè)命令按鈕來實(shí)現(xiàn),繪制圖形所需要的數(shù)據(jù)通過一個(gè)列表來選取。方位角和仰角在視點(diǎn)面板中設(shè)置,圖形使用的色圖通過下拉列表進(jìn)行選擇,著色方式通過單選按鈕組進(jìn)行選擇。切換按鈕用于隱藏或顯示坐標(biāo)軸網(wǎng)格。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE【例10.3】利用GUIDE設(shè)計(jì)工具設(shè)10.3GUIDE1.打開GUIDE,添加有關(guān)圖形對(duì)象。新建一個(gè)BlankGUI,在界面編輯器添加1個(gè)坐標(biāo)軸、3個(gè)按鈕、1個(gè)雙位按鈕、1個(gè)列表框、1個(gè)面板(視點(diǎn))、1個(gè)彈出式菜單(色圖)、1個(gè)按鈕組(著色方式),并在面板中放置兩個(gè)可編輯文本,在按鈕組中放置3個(gè)單選按鈕。利用對(duì)齊對(duì)象工具,按圖調(diào)整好各個(gè)控件對(duì)象的大小和位置。完成用戶界面布局后保存界面。將設(shè)計(jì)的用戶界面保存為.fig文件。這時(shí)系統(tǒng)還將自動(dòng)生成一個(gè)同名的.m文件,用于保存用戶界面初始化方法以及圖形窗口和控件的回調(diào)函數(shù)。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE1.打開GUIDE,添加有關(guān)圖形對(duì)象。10.3GUIDE2.利用屬性檢查器,設(shè)置控件對(duì)象的屬性。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE2.利用屬性檢查器,設(shè)置控件對(duì)象的屬性10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。(1)圖形窗口的回調(diào)函數(shù)10.3.3GUIDE的設(shè)計(jì)示例在圖形窗口的OpeningFcn函數(shù)體中輸入以下代碼:%生成圖形數(shù)據(jù)handles.peaks=peaks(34);handles.membrane=membrane;[x,y]=meshgrid(-8:0.3:8);r=sqrt(x.^2+y.^2);sinc=sin(r)./(r+eps);handles.sinc=sinc;%將默認(rèn)繪圖數(shù)據(jù)存儲(chǔ)到handles的current_data成員中handles.current_data=handles.sinc;%在后續(xù)繪圖操作時(shí),使用spring色圖繪制圖形colormap(spring);10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。(2)控件對(duì)象的回調(diào)函數(shù)
3個(gè)繪圖按鈕用于繪制表面圖、網(wǎng)格圖和等高線圖。10.3.3GUIDE的設(shè)計(jì)示例在Mesh_Callback函數(shù)體中輸入以下代碼。mesh(handles.current_data)在Surf_Callback函數(shù)體中輸入以下代碼。surf(handles.current_data);在Contour3_Callback函數(shù)體中輸入以下代碼。contour3(handles.current_data)10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。切換按鈕GridSwitch用于顯示/隱藏網(wǎng)格在GridSwitch_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例ifhObject.Value==1gridonhObject.String='隱藏網(wǎng)格';elsegridoffhObject.String='顯示網(wǎng)格';end10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。列表框ChooseFun用于選擇繪圖數(shù)據(jù)源。在ChooseFun_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例str=hObject.String;%獲取列表框中的列表項(xiàng)val=hObject.Value;%獲取選中項(xiàng)的序號(hào)%根據(jù)選中項(xiàng)的文本確定采用哪一個(gè)數(shù)據(jù)源作為繪圖數(shù)據(jù)switchstrtrim(str{val})case'Peaks'handles.current_data=handles.peaks;case'Membrane'handles.current_data=handles.membrane;case'Sinc'handles.current_data=handles.sinc;end%更新handlesguidata(hObject,handles)10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。彈出式菜單ChooseCMap用于設(shè)置繪圖所采用的色圖。在ChooseCMap_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例str=hObject.String;%獲取列表框中的列表項(xiàng)cm=hObject.Value;%獲取選中項(xiàng)的序號(hào)colormap(eval(str{cm}));10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。視點(diǎn)面板用于設(shè)置視點(diǎn),包括方位角和仰角,單擊其中的按鈕ConfigView,調(diào)用view函數(shù)設(shè)置視點(diǎn)。在ConfigView_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例el=eval(handles.edit_el.String);az=eval(handles.edit_az.String);view(az,el)10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。按鈕組ChooseShading中的選項(xiàng)發(fā)生改變時(shí),會(huì)觸發(fā)SelectionChanged事件。在ChooseShading_SelectionChangedFcn函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例%根據(jù)所選項(xiàng)的Tag屬性確定著色方式switcheventdata.NewValue.Tagcase'rb_flat'shadingflat;case'rb_interp'shadinginterp;case'rb_faceted'shadingfaceted;end10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE4.運(yùn)行GUI程序。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE4.運(yùn)行GUI程序。10.3.3G10.4App設(shè)計(jì)工具1.打開AppDesigner打開AppDesigner有兩種方法:(1)在MATLAB桌面中,選擇“主頁”選項(xiàng)卡,單擊工具欄的“新建”按鈕,從彈出的命令列表中選“App”下的命令項(xiàng)“App設(shè)計(jì)工具”。(2)在MATLAB命令行窗口輸入appdesigner命令。10.4.1AppDesigner10.4App設(shè)計(jì)工具1.打開AppDesigner110.4App設(shè)計(jì)工具2.AppDesigner窗口10.4.1AppDesigner10.4App設(shè)計(jì)工具2.AppDesigner窗口110.4App設(shè)計(jì)工具2.AppDesigner窗口(1)設(shè)計(jì)視圖用于編輯用戶界面。選擇設(shè)計(jì)視圖時(shí),設(shè)計(jì)器窗口左邊是組件庫面板,右邊是組件瀏覽器和屬性面板,中間區(qū)域是用戶界面設(shè)計(jì)區(qū),稱為畫布。10.4.1AppDesigner10.4App設(shè)計(jì)工具2.AppDesigner窗口110.4App設(shè)計(jì)工具2.AppDesigner窗口(1)設(shè)計(jì)視圖用于編輯用戶界面。(2)代碼視圖代碼視圖用于編輯、調(diào)試、分析代碼。10.4.1AppDesigner10.4App設(shè)計(jì)工具2.AppDesigner窗口110.4App設(shè)計(jì)工具1.組件的種類及作用常用組件:與GUIDE中功能相同、外觀相似的組件。GUIDE中的“可編輯文本”控件在App組件庫中分成了分別用于輸入數(shù)值和文本的兩種“編輯字段”組件。容器類組件:用于將界面上的元素按功能進(jìn)行分組。圖窗工具:用于建立用戶界面的菜單,包括“菜單欄”組件儀器類組件:用于模擬實(shí)際電子設(shè)備的操作平臺(tái)和操作方法,如儀表、旋鈕、開關(guān)等。10.4.2App組件10.4App設(shè)計(jì)工具1.組件的種類及作用10.4.210.4App設(shè)計(jì)工具2.組件的屬性常見屬性如下。(1)Enable屬性。用于控制組件對(duì)象是否可用,取值是’On’(默認(rèn)值)或’Off’。(2)Value屬性。用于獲取和設(shè)置組件對(duì)象的當(dāng)前值。(3)Limits屬性。用于獲取和設(shè)置滑塊、微調(diào)器、儀表、旋鈕等組件對(duì)象的值域。屬性值是一個(gè)二元向量[Lmin,Lmax],Lmin用于指定組件對(duì)象的最小值,Lmax用于指定組件對(duì)象的最大值。(4)Position屬性。用于定義組件對(duì)象在界面中的位置和大小10.4.2App組件10.4App設(shè)計(jì)工具2.組件的屬性10.4.2Ap10.4App設(shè)計(jì)工具1.App類的基本結(jié)構(gòu)classdef類名<matlab.apps.AppBaseproperties(Access=public)……endmethods(Access=private)function函數(shù)1(app,event)……endfunction函數(shù)2(app)……endendend10.4.3類的定義10.4App設(shè)計(jì)工具1.App類的基本結(jié)構(gòu)10.4.310.4App設(shè)計(jì)工具2.訪問權(quán)限存取數(shù)據(jù)和調(diào)用函數(shù)稱為訪問對(duì)象成員。對(duì)成員的訪問有兩種權(quán)限限定:私有(private)成員:只允許在本界面中訪問公共(public)成員:可用于與App的其他類共享數(shù)據(jù)。10.4.3類的定義10.4App設(shè)計(jì)工具2.訪問權(quán)限10.4.3類的定10.4App設(shè)計(jì)工具【例10.4】生成一個(gè)用于觀察視點(diǎn)仰角和坐標(biāo)軸著色(投影)方式對(duì)三維圖形顯示效果影響的應(yīng)用程序,界面如圖10.11所示。界面右上部的列表用于選擇繪圖函數(shù),中間的旋鈕用于設(shè)置視點(diǎn)仰角,右下部的分段旋鈕用于設(shè)置坐標(biāo)軸著色方式。10.4.4App設(shè)計(jì)工具的設(shè)計(jì)示例10.4App設(shè)計(jì)工具【例10.4】生成一個(gè)用于觀察視點(diǎn)10.4App設(shè)計(jì)工具1.打開AppDesigner,添加組件。添加一個(gè)坐標(biāo)區(qū)、一個(gè)列表框、一個(gè)切換按鈕組、兩個(gè)旋鈕、一個(gè)蹺板開關(guān)和一個(gè)分檔旋鈕,然后按圖10.12調(diào)整組件的位置和大小。10.4App設(shè)計(jì)工具1.打開AppDesigner,10.4App設(shè)計(jì)工具2.利用屬性面板設(shè)置組件對(duì)象的屬性。10.4App設(shè)計(jì)工具2.利用屬性面板設(shè)置組件對(duì)象的屬性10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。(1)編寫用于繪制圖形的updateplot函數(shù)和調(diào)整視點(diǎn)的updateview函數(shù)。在updateplot函數(shù)體加入以下代碼。%根據(jù)在列表框中的選擇,確定繪圖數(shù)據(jù)switchapp.ListBox.Valuecase'Sinc'
[x,y]=meshgrid(-8:0.3:8);r=sqrt(x.^2+y.^2);z=sin(r)./(r+eps);case'Peaks'[x,y,z]=peaks;case'Sphere'[x,y,z]=sphere;end%根據(jù)在切換按鈕組中按下的按鈕,確定繪圖方法switchapp.ButtonGroup.SelectedObjectcaseapp.surfButtonsurf(app.UIAxes,x,y,z)app.Knob_shading.Enable='On';caseapp.meshButtonmesh(app.UIAxes,x,y,z)app.Knob_shading.Enable='Off';caseapp.contour3Buttoncontour3(app.UIAxes,x,y,z)app.Knob_shading.Enable='Off';end10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。%根據(jù)10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。(1)編寫用于繪制圖形的updateplot函數(shù)和調(diào)整視點(diǎn)的updateview函數(shù)。在updateview函數(shù)體加入以下代碼。el=app.Knob_el.Value;az=app.Knob_az.Value;view(app.UIAxes,az,el)10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。el10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。(2)編寫組件對(duì)象回調(diào)函數(shù)為打開用戶界面窗口編寫響應(yīng)代碼。
為列表框和切換按鈕組編寫響應(yīng)代碼。在StartupFcn函數(shù)體加入以下代碼。
updateplot(app)在ListBoxValueChanged函數(shù)體輸入以下代碼。
updateplot(app)在ButtonGroupSelectionChanged函數(shù)體輸入以下代碼。
updateplot(app)10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。在St10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。(2)編寫組件對(duì)象回調(diào)函數(shù)為旋鈕對(duì)象編寫響應(yīng)代碼。在Knob_elValueChanged函數(shù)體加入以下代碼。
updateview(app)10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。在Kn10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。(2)編寫組件對(duì)象回調(diào)函數(shù)為分段旋鈕編寫響應(yīng)代碼。在Knob_shadingValueChanged函數(shù)體加入以下代碼。
shading(app.UIAxes,app.Knob_shading.Value)10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。在Kn10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。(2)編寫組件對(duì)象回調(diào)函數(shù)為蹺板開關(guān)編寫響應(yīng)代碼。在SwitchValueChanged函數(shù)體加入以下代碼。
switchapp.Switch.Valuecase'On'grid(app.UIAxes,'On')case'Off'grid(app.UIAxes,'Off')end10.4App設(shè)計(jì)工具3.編寫代碼,實(shí)現(xiàn)組件功能。在Sw10.4App設(shè)計(jì)工具4.運(yùn)行App。5.打包App應(yīng)用。10.4App設(shè)計(jì)工具4.運(yùn)行App。5.打包App應(yīng)用第10章
APP設(shè)計(jì)【本章學(xué)習(xí)目標(biāo)】
掌握?qǐng)D形用戶界面設(shè)計(jì)的方法。熟悉控件的常用屬性。掌握GUIDE的使用。掌握GUI回調(diào)函數(shù)的定義方法。掌握App設(shè)計(jì)工具的使用。第10章
APP設(shè)計(jì)【本章學(xué)習(xí)目標(biāo)】
掌握?qǐng)D形用戶界面設(shè)計(jì)的10.1圖形用戶界面1.控件(Controls)(1)按鈕。一個(gè)按鈕代表一種操作,也稱為命令按鈕。(2)滑動(dòng)條。用戶可以通過移動(dòng)滑塊來改變滑動(dòng)條對(duì)象的值。(3)單選按鈕。當(dāng)被選中時(shí),圓圈的中心有一個(gè)實(shí)心的黑點(diǎn),否則圓圈為空白。在一組單選按鈕中,只能有一個(gè)被選中。(4)復(fù)選框。被選中的項(xiàng)其小方框中有√。復(fù)選框一次可以選擇多項(xiàng)。(5)可編輯文本。供用戶輸入數(shù)據(jù)用。編輯框內(nèi)輸入的是字符,參與算術(shù)運(yùn)算前需要轉(zhuǎn)換為對(duì)應(yīng)的數(shù)。(6)靜態(tài)文本。一般用作其他控件的標(biāo)簽、提示。10.1.1用戶界面對(duì)象概述10.1圖形用戶界面1.控件(Controls)10.110.1圖形用戶界面2.菜單(Menus)通過使用菜單,可以把對(duì)程序的各種操作命令非常規(guī)范有效地呈現(xiàn)給用戶,單擊菜單項(xiàng)程序?qū)?zhí)行相應(yīng)的功能。菜單對(duì)象是圖形窗口的子對(duì)象??旖莶藛危–ontextMenu)是用鼠標(biāo)右鍵單擊某對(duì)象時(shí)在屏幕上彈出的菜單。也稱為上下文菜單。10.1.1用戶界面對(duì)象概述10.1圖形用戶界面2.菜單(Menus)10.1.110.1圖形用戶界面3.工具欄(Toolbars)工具欄以圖標(biāo)方式提供了常用命令的快速訪問按鈕。10.1.1用戶界面對(duì)象概述10.1圖形用戶界面3.工具欄(Toolbars)10.10.1圖形用戶界面1.外觀控制屬性(1)Style屬性。用于定義控件對(duì)象的類型。(2)Tag屬性。用于定義控件標(biāo)識(shí)。(3)String屬性。用于定義控件對(duì)象的說明文字。(4)Enable屬性。用于控制控件對(duì)象是否可用,取值是’on’(默認(rèn)值)或’off’。(5)HorizontalAlignment屬性。用于設(shè)置說明文字的水平對(duì)齊方式,可取值為'center'(默認(rèn)值)、'left'或'right'。(6)BackgroundColor用于定義控件對(duì)象區(qū)域的背景色,默認(rèn)值為[.94.94.94](淺灰色);ForegroundColor屬性用于定義控件對(duì)象說明文字的顏色,默認(rèn)為黑色。10.1.2控件的公共屬性10.1圖形用戶界面1.外觀控制屬性10.1.2控件10.1圖形用戶界面1.外觀控制屬性(7)Position屬性。用于定義控件對(duì)象在用戶界面中的位置和大小,屬性值是一個(gè)4元向量[n1,n2,n3,n4]。n1和n2分別為控件對(duì)象左下角相對(duì)于父對(duì)象的x、y坐標(biāo),n3和n4分別為控件對(duì)象的寬度和高度。(8)Max、Min屬性。用于指定控件對(duì)象的最大值和最小值,默認(rèn)值分別是1和0。
(9)Value屬性。用于獲取和設(shè)置控件對(duì)象的當(dāng)前值。(10)UserData屬性。用于存儲(chǔ)與控件對(duì)象關(guān)聯(lián)的數(shù)據(jù),默認(rèn)為空數(shù)組。10.1.2控件的公共屬性10.1圖形用戶界面1.外觀控制屬性10.1.2控件10.1圖形用戶界面2.事件響應(yīng)屬性(1)Callback屬性。屬性值是描述命令的字符串或函數(shù)句柄,當(dāng)單擊控件時(shí),系統(tǒng)將自動(dòng)執(zhí)行字符串描述的命令或調(diào)用句柄所代表的函數(shù),實(shí)施相關(guān)操作。(2)ButtonDownFcn屬性:用于定義在控件對(duì)象上單擊鼠標(biāo)左鍵時(shí)執(zhí)行的命令。(3)KeyPressFcn屬性。用于定義在控件對(duì)象上按下鍵盤鍵時(shí)執(zhí)行的命令。(4)KeyReleaseFcn屬性。用于指定在控件對(duì)象上按下鍵盤鍵后釋放時(shí)執(zhí)行的命令。(5)CreateFcn屬性:用于指定在建立控件對(duì)象時(shí)執(zhí)行的命令。(6)DeleteFcn屬性:用于指定刪除控件對(duì)象時(shí)執(zhí)行的命令。10.1.2控件的公共屬性10.1圖形用戶界面2.事件響應(yīng)屬性10.1.2控件10.1圖形用戶界面1.事件驅(qū)動(dòng)機(jī)制面向?qū)ο蟮某绦蛟O(shè)計(jì)是以對(duì)象感知事件的過程為編程單位,當(dāng)事件發(fā)生時(shí),相應(yīng)的程序段才會(huì)運(yùn)行。事件是由用戶或操作系統(tǒng)引發(fā)的動(dòng)作。gcbo命令用于獲取正在執(zhí)行回調(diào)的對(duì)象句柄。10.1.3回調(diào)函數(shù)10.1圖形用戶界面1.事件驅(qū)動(dòng)機(jī)制10.1.3回調(diào)10.1圖形用戶界面2.回調(diào)函數(shù)回調(diào)函數(shù)定義對(duì)象怎樣處理信息并響應(yīng)某事件,該函數(shù)不會(huì)主動(dòng)運(yùn)行,是由主控程序調(diào)用的?;卣{(diào)函數(shù)的基本結(jié)構(gòu):function回調(diào)函數(shù)名(source,eventdata)……end參數(shù)source是發(fā)生事件的源對(duì)象句柄,eventdata存儲(chǔ)事件數(shù)據(jù)。10.1.3回調(diào)函數(shù)10.1圖形用戶界面2.回調(diào)函數(shù)10.1.3回調(diào)函數(shù)10.1圖形用戶界面【例10.1】繪制[0,2π]的正弦曲線,當(dāng)在曲線上單擊鼠標(biāo)左鍵時(shí),將曲線線條顏色改為紅色。首先定義回調(diào)函數(shù)setlinecolor。functionsetlinecolor(source,~)source.Color='r';end將上述函數(shù)保存為函數(shù)文件setlinecolor.m。然后在命令窗口執(zhí)行以下命令。>>x=linspace(0,2*pi,50);>>h=plot(x,sin(x));>>h.ButtonDownFcn=@setlinecolor;10.1圖形用戶界面【例10.1】繪制[0,2π]的正弦10.2GUI函數(shù)函數(shù)uicontrol用于建立控件對(duì)象的,調(diào)用格式為h=uicontrol(parent,屬性1,屬性值1,屬性2,屬性值2,…)參數(shù)parent用于指定控件對(duì)象的容器(即父對(duì)象),屬性及其取值決定了控件對(duì)象的特征。例如,在圖形窗口上放置一個(gè)滑動(dòng)條:10.2.1建立控件對(duì)象fh=figure('position',[100,200,320,160]);sh=uicontrol(fh,'Style','slider',...'Max',100,'Min',0,'Value',25,...'SliderStep',[0.050.2],...'Position',[6010015030]);10.2GUI函數(shù)函數(shù)uicontrol用于建立控件對(duì)象10.2GUI函數(shù)uibuttongroup函數(shù)、uipanel函數(shù)、uitoolbar函數(shù),分別用于建立按鈕組、面板、工具欄,調(diào)用格式為h=uibuttongroup(parent,屬性1,屬性值1,屬性2,屬性值2,…)h=uipanel(parent,屬性1,屬性值1,屬性2,屬性值2,…)h=uitoolbar(parent,屬性1,屬性值1,屬性2,屬性值2,…)10.2.1建立控件對(duì)象>>fh=figure;>>bg=uibuttongroup(fh,'Position',[0.1,0.1,0.5,0.1]);>>r1=uicontrol(bg,'Style','radiobutton',...'String','選項(xiàng)A',...'Position',[101010030]);>>r2=uicontrol(bg,'Style','radiobutton',...'String','選項(xiàng)B',...'Position',[1101010030],...'Value',1);10.2GUI函數(shù)uibuttongroup函數(shù)、uip10.2GUI函數(shù)1.創(chuàng)建菜單MATLAB提供了uimenu函數(shù)來創(chuàng)建、設(shè)置、修改菜單。函數(shù)調(diào)用格式為m=uimenu(parent,屬性1,屬性值1,屬性2,屬性值2,…)建立菜單時(shí),parent為圖形窗口的句柄,默認(rèn)在當(dāng)前圖形窗口中建立這個(gè)菜單。10.2.2建立用戶菜單>>hm=uimenu(gcf,'Label','文件');>>hm1=uimenu(hm,'Label','打開');>>hm2=uimenu(hm,'Label','新建');>>hm3=uimenu(hm,'Label','保存');>>hm21=uimenu(hm2,'Label','圖形窗口');>>hm22=uimenu(hm2,'Label','坐標(biāo)軸');MATLAB圖形窗口帶有默認(rèn)菜單,若不需要圖形窗口的默認(rèn)菜單為了建立用戶自己的菜單系統(tǒng),可以先將圖形窗口的MenuBar屬性設(shè)置為none。10.2GUI函數(shù)1.創(chuàng)建菜單10.2.2建立用戶菜10.2GUI函數(shù)2.菜單屬性菜單對(duì)象除具有Children、Parent、Tag等公共屬性外,還有一些特殊屬性。Label屬性:用于定義菜單項(xiàng)上顯示的文字。Accelerator屬性:用于定義菜單項(xiàng)的快捷鍵。Checked屬性:指示菜單項(xiàng)是否已選中。Enable屬性:控制菜單項(xiàng)的可選擇性。Separator屬性:在菜單項(xiàng)上方添加一條分隔線。10.2.2建立用戶菜單10.2GUI函數(shù)2.菜單屬性10.2.2建立用戶菜10.2GUI函數(shù)(1)uicontextmenu函數(shù)用于建立快捷菜單,函數(shù)調(diào)用格式為m=uicontextmenu(parent,屬性1,屬性值1,屬性2,屬性值2,…)(2)利用uimenu函數(shù)為快捷菜單建立下一級(jí)菜單項(xiàng)。(3)通過圖形對(duì)象的UIContextMenu屬性將快捷菜單與圖形對(duì)象關(guān)聯(lián)。10.2.3建立快捷菜單10.2GUI函數(shù)(1)uicontextmenu函數(shù)用10.2GUI函數(shù)
建立腳本文件menudemo.m,程序如下:symst;x=sin(t)+sin(2*t);y=cos(t)-cos(2*t);hf=figure('Name','快捷菜單演示');hl=fplot(x,y,'Tag','myline');hc=uicontextmenu;%建立快捷菜單%建立一級(jí)菜單項(xiàng)hcs=uimenu(hc,'Text','線型');hcc=uimenu(hc,'Text','線條顏色');%建立二級(jí)菜單項(xiàng)uimenu(hcs,'Text','虛線','Tag',':','CallBack',@LineStatus)uimenu(hcs,'Text','實(shí)線','Tag','-','CallBack',@LineStatus);uimenu(hcc,'Text','紅','Tag','r','CallBack',@LineStatus);uimenu(hcc,'Text','黑','Tag','k','CallBack',@LineStatus);%將該快捷菜單和曲線對(duì)象關(guān)聯(lián)hl.UIContextMenu=hc;10.2GUI函數(shù)
建立腳本文件menudemo.m,程10.2GUI函數(shù)
建立函數(shù)文件LineStatus.m,定義回調(diào)函數(shù)。functionLineStatus(source,~)h=findobj('Tag','myline');ifsource.Parent.Text=="線條顏色"h.Color=source.Tag;elseifsource.Parent.Text=="線型"h.LineStyle=source.Tag;end10.2GUI函數(shù)
建立函數(shù)文件LineStatus.m10.3GUIDE1.打開GUIDE打開GUIDE有兩種方法:(1)在MATLAB桌面,選擇“主頁”選項(xiàng)卡,單擊工具欄的“新建”命令按鈕,,從彈出的命令列表中選“App”下的命令項(xiàng)“GUIDE”。(2)在MATLAB命令行窗口輸入guide命令。10.3.1GUIDE簡介10.3GUIDE1.打開GUIDE10.3.1GU10.3GUIDE2.界面編輯器窗口10.3.1GUIDE簡介工具欄菜單欄組件選項(xiàng)板界面設(shè)計(jì)區(qū)狀態(tài)欄10.3GUIDE2.界面編輯器窗口10.3.1GU10.3GUIDE3.回調(diào)屬性用于定義對(duì)象怎樣處理信息并響應(yīng)事件。在GUIDE中,按鈕類控件和菜單項(xiàng)的單擊事件的默認(rèn)回調(diào)屬性是Callback;其他圖形對(duì)象的回調(diào)屬性還有ButtonDownFcn、KeyPressFcn、SelectionChangeFcn等。在GUIDE中,控件的回調(diào)屬性值默認(rèn)為“%automatic”,即自動(dòng)使用默認(rèn)的回調(diào)方法。GUIDE自動(dòng)生成的回調(diào)函數(shù)頭格式為:functionpushbutton1_Callback(hObject,eventdata,handles)hObject存儲(chǔ)事件觸發(fā)的源控件eventdata存儲(chǔ)事件數(shù)據(jù)handles存儲(chǔ)用戶界面中所有對(duì)象的句柄。
10.3.1GUIDE簡介10.3GUIDE3.回調(diào)屬性10.3.1GUIDE10.3GUIDE例如,用戶界面中有一個(gè)按鈕對(duì)象pushbutton1和1個(gè)靜態(tài)文本對(duì)象text1,若運(yùn)行時(shí)單擊按鈕pushbutton1,使text1上顯示“Hello,World”,則在回調(diào)函數(shù)pushbutton1_Callback的函數(shù)體中加入以下語句:handles.text1.String='Hello,World';例如,在回調(diào)函數(shù)pushbutton1_Callback的函數(shù)體中加入以下語句:handles.mydata="Thisisanexample.";guidata(hObject,handles);在pushbutton2_Callback的函數(shù)體中加入以下語句,在對(duì)象text1上顯示上述字符串:handles.text1.String=handles.mydata;10.3GUIDE例如,用戶界面中有一個(gè)按鈕對(duì)象push10.3GUIDE1.屬性檢查器(PropertyInspector)用于查看、設(shè)置用戶界面中各個(gè)對(duì)象的屬性。雙擊某個(gè)對(duì)象,或選中對(duì)象后,單擊編輯器工具欄的“屬性檢查器”按鈕(或從“視圖”菜單中選菜單項(xiàng)“屬性檢查器”),打開屬性檢查器。在MATLAB命令行窗口輸入命令“inspect”,打開屬性檢查器。10.3.2界面設(shè)計(jì)工具10.3GUIDE1.屬性檢查器(PropertyIn10.3GUIDE2.菜單編輯器(MenuEditor)用于創(chuàng)建、設(shè)置、修改下拉式菜單和快捷菜單。(1)創(chuàng)建菜單10.3.2界面設(shè)計(jì)工具10.3GUIDE2.菜單編輯器(MenuEditor10.3GUIDE2.菜單編輯器(MenuEditor)菜單/菜單項(xiàng)的主要屬性。
Label(標(biāo)簽)屬性。用于定義菜單項(xiàng)的上顯示的文字。若在字符串中加入“&”字符,則跟隨在“&”后的字符有一條下劃線。對(duì)于這種帶有下劃線字符的菜單/菜單項(xiàng),可以用Alt+該字符鍵來激活。
Tag(標(biāo)記)屬性。作為菜單項(xiàng)的標(biāo)識(shí)。
Callback(回調(diào))屬性。該屬性的取值是函數(shù)句柄,或用字符串描述的MATLAB命令。用戶界面運(yùn)行時(shí),若單擊某菜單項(xiàng),MATLAB將自動(dòng)調(diào)用該菜單項(xiàng)回調(diào)屬性中定義的函數(shù)或命令。10.3.2界面設(shè)計(jì)工具10.3GUIDE2.菜單編輯器(MenuEditor10.3GUIDE3.工具欄編輯器(ToolbarEditor)創(chuàng)建、設(shè)置、修改工具欄。10.3.2界面設(shè)計(jì)工具10.3GUIDE3.工具欄編輯器(ToolbarEd10.3GUIDE4.對(duì)齊對(duì)象工具(AlignObjects)用于調(diào)整設(shè)計(jì)區(qū)內(nèi)的對(duì)象位置。10.3.2界面設(shè)計(jì)工具10.3GUIDE4.對(duì)齊對(duì)象工具(AlignObje10.3GUIDE5.對(duì)象瀏覽器(ObjectBrowser)對(duì)象瀏覽器用于查看界面所包含的圖形對(duì)象和展示界面的組織架構(gòu)。10.3.2界面設(shè)計(jì)工具10.3GUIDE5.對(duì)象瀏覽器(ObjectBrow10.3GUIDE6.Tab鍵順序編輯器(TabOrderEditor)利用Tab鍵順序編輯器,可以設(shè)置用戶按鍵盤上的Tab鍵時(shí),用戶界面上的對(duì)象被激活的先后順序。10.3.2界面設(shè)計(jì)工具10.3GUIDE6.Tab鍵順序編輯器(TabOrd10.3GUIDE【例10.3】利用GUIDE設(shè)計(jì)工具設(shè)計(jì)如圖10.9所示的用戶界面。該界面可以顯示表面圖、網(wǎng)格圖和等高線圖。繪制圖形的功能通過3個(gè)命令按鈕來實(shí)現(xiàn),繪制圖形所需要的數(shù)據(jù)通過一個(gè)列表來選取。方位角和仰角在視點(diǎn)面板中設(shè)置,圖形使用的色圖通過下拉列表進(jìn)行選擇,著色方式通過單選按鈕組進(jìn)行選擇。切換按鈕用于隱藏或顯示坐標(biāo)軸網(wǎng)格。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE【例10.3】利用GUIDE設(shè)計(jì)工具設(shè)10.3GUIDE1.打開GUIDE,添加有關(guān)圖形對(duì)象。新建一個(gè)BlankGUI,在界面編輯器添加1個(gè)坐標(biāo)軸、3個(gè)按鈕、1個(gè)雙位按鈕、1個(gè)列表框、1個(gè)面板(視點(diǎn))、1個(gè)彈出式菜單(色圖)、1個(gè)按鈕組(著色方式),并在面板中放置兩個(gè)可編輯文本,在按鈕組中放置3個(gè)單選按鈕。利用對(duì)齊對(duì)象工具,按圖調(diào)整好各個(gè)控件對(duì)象的大小和位置。完成用戶界面布局后保存界面。將設(shè)計(jì)的用戶界面保存為.fig文件。這時(shí)系統(tǒng)還將自動(dòng)生成一個(gè)同名的.m文件,用于保存用戶界面初始化方法以及圖形窗口和控件的回調(diào)函數(shù)。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE1.打開GUIDE,添加有關(guān)圖形對(duì)象。10.3GUIDE2.利用屬性檢查器,設(shè)置控件對(duì)象的屬性。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE2.利用屬性檢查器,設(shè)置控件對(duì)象的屬性10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。(1)圖形窗口的回調(diào)函數(shù)10.3.3GUIDE的設(shè)計(jì)示例在圖形窗口的OpeningFcn函數(shù)體中輸入以下代碼:%生成圖形數(shù)據(jù)handles.peaks=peaks(34);handles.membrane=membrane;[x,y]=meshgrid(-8:0.3:8);r=sqrt(x.^2+y.^2);sinc=sin(r)./(r+eps);handles.sinc=sinc;%將默認(rèn)繪圖數(shù)據(jù)存儲(chǔ)到handles的current_data成員中handles.current_data=handles.sinc;%在后續(xù)繪圖操作時(shí),使用spring色圖繪制圖形colormap(spring);10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。(2)控件對(duì)象的回調(diào)函數(shù)
3個(gè)繪圖按鈕用于繪制表面圖、網(wǎng)格圖和等高線圖。10.3.3GUIDE的設(shè)計(jì)示例在Mesh_Callback函數(shù)體中輸入以下代碼。mesh(handles.current_data)在Surf_Callback函數(shù)體中輸入以下代碼。surf(handles.current_data);在Contour3_Callback函數(shù)體中輸入以下代碼。contour3(handles.current_data)10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。切換按鈕GridSwitch用于顯示/隱藏網(wǎng)格在GridSwitch_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例ifhObject.Value==1gridonhObject.String='隱藏網(wǎng)格';elsegridoffhObject.String='顯示網(wǎng)格';end10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。列表框ChooseFun用于選擇繪圖數(shù)據(jù)源。在ChooseFun_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例str=hObject.String;%獲取列表框中的列表項(xiàng)val=hObject.Value;%獲取選中項(xiàng)的序號(hào)%根據(jù)選中項(xiàng)的文本確定采用哪一個(gè)數(shù)據(jù)源作為繪圖數(shù)據(jù)switchstrtrim(str{val})case'Peaks'handles.current_data=handles.peaks;case'Membrane'handles.current_data=handles.membrane;case'Sinc'handles.current_data=handles.sinc;end%更新handlesguidata(hObject,handles)10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。彈出式菜單ChooseCMap用于設(shè)置繪圖所采用的色圖。在ChooseCMap_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例str=hObject.String;%獲取列表框中的列表項(xiàng)cm=hObject.Value;%獲取選中項(xiàng)的序號(hào)colormap(eval(str{cm}));10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。視點(diǎn)面板用于設(shè)置視點(diǎn),包括方位角和仰角,單擊其中的按鈕ConfigView,調(diào)用view函數(shù)設(shè)置視點(diǎn)。在ConfigView_Callback函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例el=eval(handles.edit_el.String);az=eval(handles.edit_az.String);view(az,el)10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。按鈕組ChooseShading中的選項(xiàng)發(fā)生改變時(shí),會(huì)觸發(fā)SelectionChanged事件。在ChooseShading_SelectionChangedFcn函數(shù)體中輸入以下代碼。10.3.3GUIDE的設(shè)計(jì)示例%根據(jù)所選項(xiàng)的Tag屬性確定著色方式switcheventdata.NewValue.Tagcase'rb_flat'shadingflat;case'rb_interp'shadinginterp;case'rb_faceted'shadingfaceted;end10.3GUIDE3.編寫代碼,實(shí)現(xiàn)控件功能。10.3.10.3GUIDE4.運(yùn)行GUI程序。10.3.3GUIDE的設(shè)計(jì)示例10.3GUIDE4.運(yùn)行GUI程序。10.3.3G10.4App設(shè)計(jì)工具1.打開AppDesigner打開AppDesigner有兩種方法:(1)在MATLAB桌面中,選擇“主頁”選項(xiàng)卡,單擊工具欄的“新建”按鈕,從彈出的命令列表中選“App”下的命令項(xiàng)“App設(shè)計(jì)工具”。(2)在MATLAB命令行窗口輸入appdesigner命令。10.4.1AppDesigner10.4App設(shè)計(jì)工具1.打開AppDesigner110.4App設(shè)計(jì)工具2.AppDesigner窗口10.4.1AppDesigner10.4App設(shè)計(jì)工具2.AppDesigner窗口110.4App設(shè)計(jì)工具2.AppDesigner窗口(1)設(shè)計(jì)視圖用于編輯用戶界面。選擇設(shè)計(jì)視圖時(shí),設(shè)計(jì)器窗口左邊是組件庫面板,右邊是組件瀏覽器和屬性面板,中間區(qū)域是用戶界面設(shè)計(jì)區(qū),稱為畫布。10.4.1AppDesigner10.4App設(shè)計(jì)工具2.AppDesigner窗口110.4App設(shè)計(jì)工具2.AppDesigner窗口(1)設(shè)計(jì)視圖用于編輯用戶界面。(2)代碼視圖代碼視圖用于編輯、調(diào)試、分析代碼。10.4.1AppDesigner10.4App設(shè)計(jì)工具2.AppDesigner窗口110.4App設(shè)計(jì)工具1.組件的種類及作用常用組件:與GUIDE中功能相同、外觀相似的組件。GUIDE中的“可編輯文本”控件在App組件庫中分成了分別用于輸入數(shù)值和文本的兩種“編輯字段”組件。容器類組件:用于將界面上的元素按功能進(jìn)行分組。圖窗工具:用于建立用戶界面的菜單,包括“菜單欄”組件儀器類組件:用于模擬實(shí)際電子設(shè)備的操作平臺(tái)和操作方法,如儀表、旋鈕、開關(guān)等。10.4.2App組件10.4App設(shè)計(jì)工具1.組件的種類及作用10.4.210.4App設(shè)計(jì)工具2.組件的屬性常見屬性如下。(1)Enable屬性。用于控制組件對(duì)象是否可用,取值是’On’(默認(rèn)值)或’Off’。(2)Value屬性。用于獲取和設(shè)置組件對(duì)象的當(dāng)前值。(3)Limits屬性。用于獲取和設(shè)置滑塊、微調(diào)器、儀表、旋鈕等組件對(duì)象的值域。屬性值是一個(gè)二元向量[Lmin,Lmax],Lmin用于指定組件對(duì)象的最小值,Lmax用于指定組件對(duì)象的最大值。(4)Position屬性。用于定義組件對(duì)象在界面中的位置和大小10.4.2App組件10.4App設(shè)計(jì)工具2.組件的屬性10.4.2Ap10.4App設(shè)計(jì)工具1.App類的基本結(jié)構(gòu)classdef類名<matlab.apps.AppBaseproperties(Access=p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院地震避險(xiǎn)方案
- 鍍鋅鋼管消防管道布置方案
- 2025版高考?xì)v史一輪復(fù)習(xí)必修三第十一單元中國傳統(tǒng)文化主流思想的演變第39講“百家爭鳴”和儒家思想的形成練習(xí)含解析新人教版
- 2025屆高考化學(xué)一輪復(fù)習(xí)第四章非金屬及其重要化合物第10講氯及其化合物練習(xí)含解析新人教版
- 2024高考物理二輪復(fù)習(xí)專題6物理實(shí)驗(yàn)第2講電學(xué)實(shí)驗(yàn)及創(chuàng)新作業(yè)含解析
- 液化石油氣儲(chǔ)存及安全管理制度
- 【22秋】大學(xué)計(jì)算機(jī)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 智能財(cái)稅與財(cái)務(wù)數(shù)字化學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年城市‘四害’清潔服務(wù)協(xié)議
- 精神病醫(yī)院多學(xué)科協(xié)作方案
- 校車使用(許可)申請(qǐng)表
- 月度質(zhì)量例會(huì)PPT模板
- 煤礦皮帶智能化集控系統(tǒng)PPT教學(xué)講授課件
- 分?jǐn)?shù)乘除法整理復(fù)習(xí)(課堂PPT)
- 故鄉(xiāng)雨正普五線譜(正譜)
- YD_T 3956-2021 電信網(wǎng)和互聯(lián)網(wǎng)數(shù)據(jù)安全評(píng)估規(guī)范_(高清版)
- 2022年物業(yè)管理師《物業(yè)管理實(shí)務(wù)》考試題庫大全-下(多選題、簡答)
- 大班科學(xué)活動(dòng)教案《豆豆家族》含PPT課件
- 壓力管道檢驗(yàn)員在線考試習(xí)題與答案
- 【精品試卷】部編人教版(統(tǒng)編)一年級(jí)上冊語文第一單元測試卷含答案
- 金屬有機(jī)化學(xué)ppt課件
評(píng)論
0/150
提交評(píng)論