




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第第6講講 MATLAB GUI界面設計界面設計n6.1 GUI開發環境開發環境n6.2 控件對象及屬性控件對象及屬性n6.3 菜單設計菜單設計n6.4 GUI設計案例設計案例 2 圖形用戶界面圖形用戶界面(GUI)是指由窗口、菜單、圖)是指由窗口、菜單、圖標、光標、按鍵、對話框和文本等各種標、光標、按鍵、對話框和文本等各種圖形對象圖形對象組組成的用戶界面。它讓用戶定制用戶與成的用戶界面。它讓用戶定制用戶與Matlab的交互的交互方式,而命令窗口不是唯一與方式,而命令窗口不是唯一與Matlab的交互方式。的交互方式。 用戶界面用戶界面是用戶與計算機進行信息交流的方式。是用戶與計算機進行信息交
2、流的方式。計算機在屏幕顯示圖形和文本,若有揚聲器還可產計算機在屏幕顯示圖形和文本,若有揚聲器還可產生聲音。用戶通過輸入設備(如:鍵盤、鼠標、繪生聲音。用戶通過輸入設備(如:鍵盤、鼠標、繪制板或麥克風),與計算機通訊。制板或麥克風),與計算機通訊。GUI概述概述3 Matlab中設計圖形用戶界面的中設計圖形用戶界面的方法有兩種:方法有兩種:使使用可視化的界面環境用可視化的界面環境和和通過編寫程序通過編寫程序。 基本圖形對象分為基本圖形對象分為控件對象控件對象和和用戶界面菜單對用戶界面菜單對象象,簡稱,簡稱控件控件和和菜單菜單。 控件是對控件是對數據與方法的一個封裝數據與方法的一個封裝。程序運行時
3、,。程序運行時,用戶可以與之交互,實現用戶可以與之交互,實現數據輸入數據輸入與與數據操作數據操作。 控件:按鈕、文本框、列表框、選擇框、滾動條、控件:按鈕、文本框、列表框、選擇框、滾動條、坐標軸等坐標軸等GUI概述概述4圖形用戶界面設計工具的啟動圖形用戶界面設計工具的啟動圖形用戶界面設計工具的啟動方式:圖形用戶界面設計工具的啟動方式:1. 命令方式命令方式圖形用戶界面圖形用戶界面GUI設計工具的啟動命令為設計工具的啟動命令為guide,格式為,格式為:1)guide功能:功能:啟動啟動GUI設計工具,并建立名字為設計工具,并建立名字為untitled.fig的圖形的圖形用戶界面。用戶界面。 功
4、能:功能:啟動啟動GUI設計工具,并打開已建立的圖形用戶界面設計工具,并打開已建立的圖形用戶界面filename。 2)guide filename52. 菜單方式菜單方式 在在Matlab的主窗口中,選擇的主窗口中,選擇File菜單中的菜單中的New菜單項,再選擇其中的菜單項,再選擇其中的GUI命令,就會顯示命令,就會顯示GUI的的設計模板。設計模板。圖形用戶界面設計工具的啟動圖形用戶界面設計工具的啟動6Matlab為為GUI設計提供設計提供4種模板種模板,分別是,分別是:uBlank GUI(Default)(空白模板,默認空白模板,默認);uGUI with Uicontrols(帶控件
5、對象的帶控件對象的GUI模板模板); uGUI with Axes and Menu(帶坐標軸與菜單的帶坐標軸與菜單的GUI模板模板);uModal Question Dialog(帶模式問題對話框的帶模式問題對話框的GUI模板模板)。 當用戶選擇不同的模板時,在當用戶選擇不同的模板時,在GUI設計模板界面設計模板界面的右邊就會顯示出與該模板對應的的右邊就會顯示出與該模板對應的GUI圖形。圖形。 圖形用戶界面設計工具的啟動圖形用戶界面設計工具的啟動7 圖形用戶界面設計工具啟動時模板選擇對話框圖形用戶界面設計工具啟動時模板選擇對話框圖形用戶界面設計工具的啟動圖形用戶界面設計工具的啟動8圖形用戶界
6、面設計窗口圖形用戶界面設計窗口 圖形用戶界面圖形用戶界面GUI設計窗口由設計窗口由菜單欄、工具欄、菜單欄、工具欄、控件工具欄控件工具欄以及以及圖形對象設計區圖形對象設計區等等4個功能區個功能區組成組成。右圖為空白右圖為空白GUI模板情形模板情形控件工具欄控件工具欄圖形對象設計區圖形對象設計區工具欄工具欄9 Matlab提供了一套可視化的創建圖形窗口的工具,提供了一套可視化的創建圖形窗口的工具,使用圖形用戶界面開發環境可方便地使用圖形用戶界面開發環境可方便地創建創建GUI應用程應用程序序,它可以,它可以根據用戶設計的根據用戶設計的GUI布局,自動生成布局,自動生成M文文件的框架件的框架,用戶使用
7、這一框架編制自己的應用程序。,用戶使用這一框架編制自己的應用程序。主要包括:主要包括:6.1 圖形用戶界面開發環境圖形用戶界面開發環境(GUIDE)u布局編輯器布局編輯器(Layout Edtor)在圖形窗口中創建及布置圖形對象。u幾何排列工具幾何排列工具(Alignment Tool)調整各對象相互之間的幾何關系和位置;10u對象瀏覽器對象瀏覽器(Object Browser)用于獲得當前Matlab圖形用戶界面程序中的全部對象信息,對象的類型,同時顯示控件的名稱和標識,在控件上雙擊鼠標可以打開該控件的屬性編輯器;u菜單編輯器菜單編輯器(Menu Editor)創建、設計、修改下拉式菜單和快
8、捷菜單;uTab順序編輯器順序編輯器(Tab Order Editor)用于設置當用戶按下鍵盤上的Tab鍵時,對象被選中的先后順序。 u屬性查看器屬性查看器(Property Inspector)查詢并設置屬性值;6.1 圖形用戶界面開發環境圖形用戶界面開發環境(GUIDE)11 用于從控件選擇板上選擇控件對象并放置到布局用于從控件選擇板上選擇控件對象并放置到布局區去區去,布局區被激活后就成為圖形窗口。,布局區被激活后就成為圖形窗口。 在命令窗口在命令窗口輸入輸入GUIDE命令或點擊工具欄中的命令或點擊工具欄中的guide圖標圖標 都可都可以以打開空白的布局編輯器打開空白的布局編輯器,在命令窗
9、口輸入,在命令窗口輸入GUIDE filename 可可打開一個已存在的打開一個已存在的名為名為filename圖形用戶界圖形用戶界面。面。1. 布局編輯器布局編輯器(Layout editor)121) 將控件對象放置到布局區將控件對象放置到布局區u 用鼠標選擇并放置控件到布局區內;u 移動控件到適當的位置;u 改變控件的大小;u 選中多個對象的方法。一一個個簡簡單單的的布布局局示示例例1. 布局編輯器布局編輯器(Layout editor)13 點擊 即可激活圖形窗口,如所建立的布局還沒有進行存儲,可用File菜單下的Save As菜單項(或工具欄中的工具欄中的對應項對應項),按輸入的文件
10、的名字,在激活圖形窗口的同時將存儲一對同名的M文件和帶有.fig擴展名的FIG文件。2)激活圖形窗口)激活圖形窗口1. 布局編輯器布局編輯器(Layout editor)143) 運行運行GUI程序程序 在命令窗口直接鍵入文件名或用在命令窗口直接鍵入文件名或用openfig, open或或hgload命令運行命令運行GUI程序。程序。1. 布局編輯器布局編輯器(Layout editor)15 4) 布局編輯器參數設置布局編輯器參數設置File菜單下的菜單下的Preferences菜菜單項打開參數單項打開參數設置窗口,點設置窗口,點擊樹狀目錄中擊樹狀目錄中的的GUIDE,即可以設置布即可以設置
11、布局編輯器的參局編輯器的參數。數。16 5) 布局編輯器的彈出菜單布局編輯器的彈出菜單在任一控件上按下鼠標右鍵,會彈出一個菜單,通過該菜單可以完成布局編輯器的大部分操作。172. 位置調整工具位置調整工具(Alignment tool) 對象位置調整器中的第一欄是垂直方向垂直方向的位置調整,第二欄是水平方向水平方向的位置調整。 利用位置調整工具,可以對利用位置調整工具,可以對GUI對象設計區內的多個對象設計區內的多個對象的位置進行調整。對象的位置進行調整。位置調整工具的打開方式有兩種:位置調整工具的打開方式有兩種:1)從GUI設計窗口的工具欄上選擇Align Objects命令按鈕2)選擇To
12、ols菜單下的Align Objects.菜單項,就可以打開對象位置調整器18利用對象屬性查看器,可以查看每個對象的屬性值,也利用對象屬性查看器,可以查看每個對象的屬性值,也可以修改、設置對象的屬性值。可以修改、設置對象的屬性值。3. 用屬性查看器設置控件屬性用屬性查看器設置控件屬性1) 打開屬性查看器打開屬性查看器(Opening Property Inspector)對象屬性查看器的打開方式有四種:對象屬性查看器的打開方式有四種:u從GUI設計窗口工具欄工具欄上選擇Property Inspector命令按鈕 ;u選擇View菜單菜單下的Property Inspector菜單項;u在控件
13、對象上單擊鼠標右鍵,選擇彈出菜單的 Property Inspector菜單項。 u在命令窗口命令窗口中輸入inspect;19u 布置控件;布置控件;u 定義文本框的屬性;定義文本框的屬性;u 定義坐標軸的屬性;定義坐標軸的屬性;u 定義按鈕的屬性;定義按鈕的屬性;u 定義復選框。定義復選框。2) 使用屬性查看器使用屬性查看器(Using Property Inspector)3. 用屬性查看器設置控件屬性用屬性查看器設置控件屬性20利用菜單編輯器,可以創建、設置、修改下拉式菜單和快利用菜單編輯器,可以創建、設置、修改下拉式菜單和快捷菜單。選擇捷菜單。選擇 Tools 菜單下的菜單下的 Me
14、nu Editor.子菜單,即可子菜單,即可打開菜單編輯器。打開菜單編輯器。4. 菜單編輯器菜單編輯器(Menu Editor)也可以從也可以從GUI設計設計窗口的工具欄上選窗口的工具欄上選擇擇Menu Editor命命令按鈕,打開菜單令按鈕,打開菜單編輯程序。編輯程序。 21菜單編輯器左上角菜單編輯器左上角的第一個按鈕用于的第一個按鈕用于創建創建一級菜單項一級菜單項。第二個按鈕用于創第二個按鈕用于創建建一級菜單的子菜一級菜單的子菜單單。4. 菜單編輯器菜單編輯器(Menu Editor)22菜單編輯器的左下角有兩個按鈕,選擇第一個按鈕,可以創建下拉式菜單下拉式菜單。選擇第二個按鈕,可以創建C
15、ontext Context MenuMenu菜單菜單。選擇它后,菜單編輯器左上角的第三個按鈕就會變成可用,單擊它就可以創建Context MenuContext Menu主菜單主菜單。在選中已經創建的Context Menu主菜單后,可以單擊第二個按鈕創建選中的Context Menu主菜單的子菜單。與下拉式菜單一樣,選中創建的某個Context Menu菜單,菜單編輯器的右邊就會顯示該菜單的有關屬性,可以在這里設置、修改菜單的屬性。4. 菜單編輯器菜單編輯器(Menu Editor)23菜單編輯器左上角的第四個與第五個按鈕用于對選中的菜單進行左移與右移左移與右移,第六與第七個按鈕用于對選中
16、的菜單進行上移與下上移與下移移,最右邊的按鈕用于刪刪除除選中的菜單。4. 菜單編輯器菜單編輯器(Menu Editor)245. 對象瀏覽器對象瀏覽器(Object Browsers) 利用對象瀏覽器,可以查看當前設計階段的各個句柄利用對象瀏覽器,可以查看當前設計階段的各個句柄圖形對象。可以在對象瀏覽器中選中一個或多個控件來打圖形對象。可以在對象瀏覽器中選中一個或多個控件來打開該控件的屬性編輯器。開該控件的屬性編輯器。對象瀏覽器的打開方式有:對象瀏覽器的打開方式有:1)從GUI設計窗口的工具欄工具欄上選擇Object Browser命令按鈕;2)選擇View菜單菜單下的Object Brows
17、er子菜單;3)在設計區域單擊鼠標右鍵,選擇彈出菜單的 Object Browser。25. Tab順序編輯器順序編輯器(Tab Order Editor) 利用利用Tab順序編輯器順序編輯器(Tab Order Editor),可以設置用戶,可以設置用戶按鍵盤上的按鍵盤上的Tab鍵時,對象被選中的先后順序。鍵時,對象被選中的先后順序。Tab順序編輯器的打開方式為:順序編輯器的打開方式為:1)選擇)選擇Tools菜單菜單下的下的Tab Order Editor.菜單項,就可以打菜單項,就可以打開開Tab順序編輯器。順序編輯器。2)從)從GUI設計窗口的設計窗口的工具工具欄欄上選擇上選擇Tab
18、Order Editor.命令按鈕。命令按鈕。261. GUI控件對象類型控件對象類型 控件對象是事件響應的圖形界面對象。當某一控件對象是事件響應的圖形界面對象。當某一事件發生時,應用程序會做出響應并執行某些預事件發生時,應用程序會做出響應并執行某些預定的功能子程序定的功能子程序(Callback). Matlab中的控件大致可分為兩種,一種為中的控件大致可分為兩種,一種為動作動作控件控件,鼠標點擊這些控件時會產生相應的響應。,鼠標點擊這些控件時會產生相應的響應。一種為一種為靜態控件靜態控件,是一種不產生響應的控件,如,是一種不產生響應的控件,如靜態文本框等。靜態文本框等。 6.2 控件對象及
19、屬性控件對象及屬性271) 按鈕按鈕(Push Buttons):執行某種預定的功能或操作;執行某種預定的功能或操作;2) 開關按鈕開關按鈕(Toggle Button):產生一個動作并指示一個二進產生一個動作并指示一個二進制狀態(開或關),當點擊它時按鈕將下陷,并執行制狀態(開或關),當點擊它時按鈕將下陷,并執行callback(回調函數)中指定的內容,再次點擊,按鈕復(回調函數)中指定的內容,再次點擊,按鈕復原,并再次執行原,并再次執行callback 中的內容;中的內容;3) 單選框單選框(Radio Button):單個的單選框用來在兩種狀態之單個的單選框用來在兩種狀態之間切換,多個單
20、選框組成一個單選框組時,用戶只能在間切換,多個單選框組成一個單選框組時,用戶只能在一組狀態中選擇單一的狀態,或稱為單選項;一組狀態中選擇單一的狀態,或稱為單選項;4) 復選框復選框(Check Boxes):單個的復選框用來在兩種狀態之單個的復選框用來在兩種狀態之間切換,多個復選框組成一個復選框組時,可使用戶在間切換,多個復選框組成一個復選框組時,可使用戶在一組狀態中作組合式的選擇,或稱為多選項;一組狀態中作組合式的選擇,或稱為多選項;1. GUI控件對象類型控件對象類型286) 靜態文本框靜態文本框(Static Texts):僅用于顯示單行的說明文字僅用于顯示單行的說明文字;7) 滾動條滾
21、動條(Slider): 可輸入指定范圍的數量值;可輸入指定范圍的數量值;8) 組合板組合板(Panel):在圖形窗口中對控件分組組合;在圖形窗口中對控件分組組合;9) 列表框列表框(List Boxes):在其中定義一系列可供選擇的字符串在其中定義一系列可供選擇的字符串10) 彈出式菜單彈出式菜單(Popup Menus): 讓用戶從一列菜單項中選讓用戶從一列菜單項中選擇一項作為參數輸入;擇一項作為參數輸入;5) 文本編輯器文本編輯器(Editable Texts):用來使用鍵盤輸入字符串用來使用鍵盤輸入字符串 的值,可以對編輯框中的內容進行編輯、刪除和替換等的值,可以對編輯框中的內容進行編輯
22、、刪除和替換等操作;操作;1. GUI控件對象類型控件對象類型29 用戶可以在創建控件對象時,設定其屬性值,未指用戶可以在創建控件對象時,設定其屬性值,未指定時將使用系統缺省值。定時將使用系統缺省值。2.控件對象的屬性控件對象的屬性(Attributes of controller object) 兩大類控件對象屬性兩大類控件對象屬性:第一類是所有控件對象都具:第一類是所有控件對象都具有的公共屬性,第二類是控件對象作為圖形對象所具有的公共屬性,第二類是控件對象作為圖形對象所具有的屬性。有的屬性。 每種控件都有一些可以設置的參數,每種控件都有一些可以設置的參數,用于表現控件用于表現控件的外形、功
23、能及效果的外形、功能及效果,即,即屬性屬性。屬性由兩部分組成:。屬性由兩部分組成:屬性名和屬性值,它們必須是成對出現的屬性名和屬性值,它們必須是成對出現的。301)控件對象的公共屬性)控件對象的公共屬性uChildren 取值為空矩陣,因為控件對象沒有自己的子對象取值為空矩陣,因為控件對象沒有自己的子對象uTag取值為字符串,定義了取值為字符串,定義了控件的標識值控件的標識值,在任何程序中,在任何程序中都可以通過這個標識值控制該控件對象;都可以通過這個標識值控制該控件對象;uType 取值為取值為uicontrol,表明圖形對象的類型;,表明圖形對象的類型;uVisible取值為取值為on 或
24、或off。uUserDate取值為空矩陣,用于保存與該控件對象相關的取值為空矩陣,用于保存與該控件對象相關的重要數據和信息;重要數據和信息;uParent取值為取值為某個圖形窗口對象的句柄某個圖形窗口對象的句柄,該句柄表明了,該句柄表明了控件對象所在的圖形窗口;控件對象所在的圖形窗口;31uBackgroundColor取值為顏色的預定義字符或取值為顏色的預定義字符或RGB數值;缺省值為淺數值;缺省值為淺灰色;灰色;uCallback取值為字符串,取值為字符串,可以是某個可以是某個M文件名或一小段文件名或一小段Matlab語句語句,當用戶激活某個控件對象時,應用程序就運行該屬性定義的子程序;當
25、用戶激活某個控件對象時,應用程序就運行該屬性定義的子程序;uEnable取值為取值為on(缺省值)(缺省值),inactive和和off;uExtend取值為四元素矢量取值為四元素矢量0, 0, width, height,記錄控件對象標題字,記錄控件對象標題字符的位置和尺寸;符的位置和尺寸;uForegroundColor取值為顏色的預定義字符或取值為顏色的預定義字符或RGB數值,該屬性定義數值,該屬性定義控件對象標題字符的顏色;缺省值為黑色;控件對象標題字符的顏色;缺省值為黑色;uMax,Min取值都為數值,缺省值分別為取值都為數值,缺省值分別為1和和0;uString取值為字符串矩陣或塊
26、數組,定義控件對象取值為字符串矩陣或塊數組,定義控件對象標題標題或選項內容;或選項內容;uStyle取值可以是取值可以是pushbutton(缺省值缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或或listbox;uUnits取值可以是取值可以是pixels (缺省值缺省值), normalized(相對單位)(相對單位), inches, centimeters(厘米)或(厘米)或points(磅);(磅);uValue取值可以是矢量,也可以是數值,其含義及解釋依賴于控件對取值可以是矢量,也可以是數值,其含
27、義及解釋依賴于控件對象的類型。象的類型。2)控件對象的基本控制屬性)控件對象的基本控制屬性32uFontAngle取值為取值為normal(正體,缺省值)(正體,缺省值), italic(斜(斜體)體), oblique(方頭);(方頭);uFontName取值為控件標題等字體的字庫名;取值為控件標題等字體的字庫名;uFontSize取值為數值;取值為數值;uFontUnits取值為取值為points(缺省值)(缺省值), normalized, inches, centimeters或或pixels;uFontWeight取值為取值為normal(缺省值)(缺省值), light,demi和
28、和bold,定義字符的粗細;,定義字符的粗細;uHorizontalAligment取值為取值為left,center (缺省值)(缺省值) 或或 right,定義控件對象標題等的對齊方式。,定義控件對象標題等的對齊方式。3) 控件對象的修飾控制屬性控件對象的修飾控制屬性33uListboxTop取值為數量值,用于listbox控件對象;uSliderStep取值為兩元素矢量minstep,maxstep,用于slider控件對象;uSelected取值為on 或off(缺省值) ;uSlectionHighlight取值為on 或off(缺省值) 。4)控件對象的輔助屬性)控件對象的輔助屬性
29、uBusyAction取值為cancel或queue(缺省值) ;uButtDownFun取值為字符串,一般為某個M文件名或一小段Matlab程序;uCreatfun 取值為字符串,一般為某個M文件名或一小段Matlab程序;uDeletFun取值為字符串,一般為某個M文件名或一小段Matlab程序;uHandleVisibility取值為on(缺省值), callback或off;uInterruptible取值為on 或off(缺省值) 。5)Callback管理屬性管理屬性343. 控件對象的建立控件對象的建立 Matlab提供了用于建立控件對象的函數提供了用于建立控件對象的函數uico
30、ntrol,其調,其調用格式為:用格式為: 對象句柄對象句柄=uicontrol(圖形窗口句柄,屬性名圖形窗口句柄,屬性名1,屬,屬性值性值1,屬性名,屬性名2,屬性值,屬性值2,) 在圖形窗口界面有各種各樣的控件,利用這些控件可在圖形窗口界面有各種各樣的控件,利用這些控件可以實現有關控制。以實現有關控制。例例: 建立數制轉換對話框。建立數制轉換對話框。在左邊輸入一個十進制整數和在左邊輸入一個十進制整數和2-16之間的數,單擊之間的數,單擊“轉換轉換”按鈕能在右邊得到十進制數所按鈕能在右邊得到十進制數所對應的對應的2-16進制字符串,單擊進制字符串,單擊“退出退出”按鈕退出對話框。按鈕退出對話
31、框。35 hf=figure(Color,0,1,1,Position,100,200,400,200,. Name,數制轉換數制轉換,NumberTitle,off,MenuBar,none); uicontrol(hf,Style,Text, Units,normalized,. Position,0.05,0.8,0.45,0.1,Horizontal,center,. String,輸輸 入入 框框,Back,0,1,1); uicontrol(hf,Style,Text,Position,0.5,0.8,0.45,0.1,. Units,normalized,Horizontal,c
32、enter,. String,輸輸 出出 框框,Back,0,1,1); uicontrol(hf,Style,Frame,Position,0.04,0.33,0.45,0.45,. Units,normalized,Back,1,1,0); uicontrol(hf,Style,Text,Position,0.05,0.6,0.25,0.1,. Units,normalized,Horizontal,center,. String,十進制數十進制數,Back,1,1,0); uicontrol(hf,Style,Text,Position,0.05,0.4,0.25,0.1,. Units
33、,normalized,Horizontal,center,. String,216進制進制,Back,1,1,0); he1=uicontrol(hf,Style,Edit,Position,0.25,0.6,0.2,0.1,. Units,normalized,Back,0,1,0); he2=uicontrol(hf,Style,Edit,Position,0.25,0.4,0.2,0.1,. Units,normalized,Back,0,1,0); uicontrol(hf,Style,Frame,Position,0.52,0.33,0.45,0.45,. Units,normal
34、ized,Back,1,1,0); ht=uicontrol(hf,Style,Text,Position,0.6,0.5,0.3,0.1,. Units,normalized,Horizontal,center,Back,0,1,0); COMM=n=str2num(get(he1,String);,b=str2num(get(he2,String);,. dec=trdec(n,b);,set(ht,string,dec); uicontrol(hf,Style,Push,Position,0.18,0.1,0.2,0.12,. String,轉轉 換換,Units,normalized,
35、Call,COMM); uicontrol(hf,Style,Push,Position,0.65,0.1,0.2,0.12,. String,退退 出出,Units,normalized,Call,close(hf);36程序調用了trdec.m函數文件,該函數的作用是將任意十進制整數轉換為216進制字符串。trdec.m函數文件如下: function dec=trdec(n,b) ch1=0123456789ABCDEF; %十六進制的十六進制的16個符號個符號 k=1; while n=0 %不斷除某進制基數取余直到商為不斷除某進制基數取余直到商為0 p(k)=rem(n,b); n=
36、fix(n/b); k=k+1; end k=k-1; strdec=; while k=1 %形成某進制數的字符串形成某進制數的字符串 kb=p(k); strdec=strcat(strdec,ch1(kb+1:kb+1); k=k-1; end dec=strdec;37建立的數制轉換對話框如下:386.3 菜單設計菜單設計Hm=uimenu(Hp,屬性名,屬性名1,屬性值,屬性值1,屬性,屬性名名2,屬性值,屬性值2,)功能:功能:創建句柄值為創建句柄值為Hm的自定義的用戶菜單。其中的自定義的用戶菜單。其中Hp為為其父對象的句柄其父對象的句柄,屬性名和屬性值構成屬性二元對,定義屬性名和
37、屬性值構成屬性二元對,定義用戶菜單的屬性。用戶菜單的屬性。建立自定義的用戶菜單的函數為建立自定義的用戶菜單的函數為uimenu,格式,格式為:為:1. 建立用戶菜單建立用戶菜單39 子菜單項句柄子菜單項句柄=uimenu(一級菜單項句柄,屬一級菜單項句柄,屬性名性名1,屬性值,屬性值1,屬性名,屬性名2,屬性值,屬性值2,) 因其調用方法不同,該函數可以用于建立一級菜因其調用方法不同,該函數可以用于建立一級菜單項和子菜單項。單項和子菜單項。建立建立一級菜單項一級菜單項的函數調用格式為:的函數調用格式為:一級菜單項句柄一級菜單項句柄=uimenu(圖形窗口句柄,屬性圖形窗口句柄,屬性名名1,屬性
38、值,屬性值1,屬性名,屬性名2,屬性值,屬性值2,)建立建立子菜單項子菜單項的函數調用格式為:的函數調用格式為:1. 建立用戶菜單建立用戶菜單402 . 菜單對象常用屬性菜單對象常用屬性 菜單對象除具有菜單對象除具有Children(子對象),(子對象),Parent(父對(父對象),象),Tag(標簽),(標簽),Type(類型),(類型),UserData(用戶數(用戶數據),據),Enable(使能)和(使能)和 Visible(可見性)等公共屬性,(可見性)等公共屬性,還有一些常用的特殊屬性,如回調(還有一些常用的特殊屬性,如回調(callback)屬性和菜單)屬性和菜單名名(labe
39、l)。 另外,用戶菜單的外觀有四個屬性:另外,用戶菜單的外觀有四個屬性:Position(位置),(位置),Separator(分隔線),(分隔線),checked(檢錄符)和(檢錄符)和ForeGroundColor(前景顏色)。(前景顏色)。1)Tag屬性屬性 Tag屬性的取值是字符串,它定義了該屬性的取值是字符串,它定義了該菜單對象的菜單對象的一個一個標識值標識值。定義了。定義了Tag屬性后,在任何程序中都可以通過這個屬性后,在任何程序中都可以通過這個標識值找出該菜單對象。標識值找出該菜單對象。413)UserData屬性屬性 UserData屬性的取值是一個矩陣,缺省值為空矩陣,用屬性
40、的取值是一個矩陣,缺省值為空矩陣,用戶可以在這個屬性中保存與該菜單對象相關的重要數據或戶可以在這個屬性中保存與該菜單對象相關的重要數據或信息,借此可以達到傳遞數據或信息的目的。信息,借此可以達到傳遞數據或信息的目的。可以用可以用set和和get函數訪問該屬性函數訪問該屬性。2)Type屬性屬性 Type屬性的取值總是屬性的取值總是uimenu,這個屬性值標明圖形對,這個屬性值標明圖形對象的類型。對菜單對象,其類型就是象的類型。對菜單對象,其類型就是uimenu,用戶不能改用戶不能改寫這個屬性寫這個屬性。2 . 菜單對象常用屬性菜單對象常用屬性42 菜單條中含有菜單條中含有3個菜單項個菜單項:P
41、lot、Option和和Quit。Plot菜單項:菜單項:Sine Wave和和Cosine Wave兩個子菜單項,分別兩個子菜單項,分別控制在本圖形窗口畫出正弦和余弦曲線。控制在本圖形窗口畫出正弦和余弦曲線。Option菜單項菜單項:Grid on和和Grid off控制給坐標軸加網格線,控制給坐標軸加網格線,Box on和和Box off控制給坐標軸加邊框,而且這控制給坐標軸加邊框,而且這4項只有在畫項只有在畫曲線時才是可選的。曲線時才是可選的。Figure Color控制圖形窗口背景顏色。控制圖形窗口背景顏色。Quit菜單項菜單項;控制是否退出系統。控制是否退出系統。例:例: 建立建立“
42、圖形演示系統圖形演示系統”菜單菜單43screen=get(0,ScreenSize);W=screen(3);H=screen(4);figure(Color,1,1,1,Position,0.2*H,0.2*H,0.6*W,0.4*H,. Name,圖形演示系統圖形演示系統,NumberTitle,off,MenuBar,none); %定義定義Plot菜單項菜單項 hplot=uimenu(gcf,Label,&Plot); uimenu(hplot,Label,Sine Wave,Call,t=-pi:pi/20:pi;,plot(t,sin(t);,. set(hgon,En
43、able,on);,set(hgoff,Enable,on);,. set(hbon,Enable,on);,set(hboff,Enable,on);); uimenu(hplot,Label,Cosine Wave,Call,t=-pi:pi/20:pi;,plot(t,cos(t);,. set(hgon,Enable,on);,set(hgoff,Enable,on);,. set(hbon,Enable,on);,set(hboff,Enable,on);); %定義定義Option菜單項菜單項 hoption=uimenu(gcf,Label,&Option); hgon=
44、uimenu(hoption,Label,&Grig on,Call,grid on,Enable,off); hgoff=uimenu(hoption,Label,&Grig off,Call,grid off,Enable,off); hbon=uimenu(hoption,Label,&Box on,separator,on,Call,box on,Enable,off); hboff=uimenu(hoption,Label,&Box off,Call,box off,Enable,off); hfigcor=uimenu(hoption,Label,&
45、amp;Figure Color,Separator,on); uimenu(hfigcor,Label,&Red,Accelerator,r,Call,set(gcf,Color,r);); uimenu(hfigcor,Label,&Blue,Accelerator,b,Call,set(gcf,Color,b);); uimenu(hfigcor,Label,&Yellow,Call,set(gcf,Color,y);); uimenu(hfigcor,Label,&White,Call,set(gcf,Color,w);); %定義定義Quit菜單項菜單
46、項 uimenu(gcf,Label,&Quit,Call,close(gcf);44建立的“圖形演示系統”菜單如下:45 菜單條中含有菜單條中含有File和和Help兩個菜單項。兩個菜單項。如果選擇File中的New選項,則將顯示New Item字樣,如果選擇File中的Open選項,則將顯示出Open Item字樣。File中的Save菜單項初始時處于禁選狀態,在選擇Help選項之后將此菜單項恢復成可選狀態,如果選擇File中的Save選項,則將出現一個新的菜單(三級菜單),其中共有兩個子菜單項Text file和Graphics file,如果選擇第1項,則將變量k1和k2分別賦
47、為0和1,然后調用file01.m文件來進行相應的處理(該文件需要另行編寫),如果選擇第2項,則將變量k1和k2分別賦為1和0,然后調用file10.m文件來進行相應的處理(該文件也需要另行編寫)。如果選擇File中的Save As選項,則將顯示Save As Item字樣。如果選擇File中的Exit選項,則將關閉當前窗口。如果選擇Help中About 選項,則將顯示Help Item字樣,并將Save 菜單設置成可選狀態。例:例: 建立一個菜單系統建立一個菜單系統。46程序如下:screen=get(0,ScreenSize); W=screen(3);H=screen(4); hf=fi
48、gure(Color,1,1,1,Position,1,1,0.4*W,0.3*H,. Name,菜單設計示例一菜單設計示例一,NumberTitle,off,MenuBar,none); hfile=uimenu(hf,label,&File); hhelp=uimenu(hf,label,&Help); uimenu(hfile,label,&New,call,disp(New Item); uimenu(hfile,label,&Open,call,disp(Open Item); hsave=uimenu(hfile,label,&Save,En
49、able,off); uimenu(hsave,label,Text file,call,k1=0;k2=1;file01;); uimenu(hsave,label,Graphics file,call,k1=1;k2=0;file10;); uimenu(hfile,label,Save &As,call,disp(Save As Item); uimenu(hfile,label,&Exit,separator,on,call,close(hf); uimenu(hhelp,label,About .,call,. disp(Help Item);,set(hsave,E
50、nable,on);47建立的菜單系統如下:483. 快捷菜單快捷菜單3)利用)利用set函數將該快捷菜單和某圖形對象聯系起來。函數將該快捷菜單和某圖形對象聯系起來。 快捷菜單是用鼠標右鍵單擊某對象時在屏幕上彈出的快捷菜單是用鼠標右鍵單擊某對象時在屏幕上彈出的菜單。菜單。這種菜單出現的位置是不固定的,而且總是和某個這種菜單出現的位置是不固定的,而且總是和某個圖形對象相聯系。圖形對象相聯系。 在在Matlab中,可以使用中,可以使用uicontextmenu函數和圖形對象函數和圖形對象的的UIContextMenu屬性來建立快捷菜單,具體步驟為屬性來建立快捷菜單,具體步驟為:1) 利用利用uic
51、ontextmenu函數建立快捷菜單函數建立快捷菜單,格式為: 2)利用)利用uimenu函數為快捷菜單建立菜單項函數為快捷菜單建立菜單項,格式為: 功能:功能:為創建的快捷菜單賦值,其中屬性名和屬性值構成屬性二元對。 uimenu(快捷菜單名快捷菜單名,屬性名,屬性值,屬性名,屬性值,.)%建立快捷菜單,并將句柄值賦給變量建立快捷菜單,并將句柄值賦給變量hchc=uicontextmenu49x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);hl=plot(x,y);hc=uicontextmenu; %建立快捷菜單建立快捷菜單hls=uimenu(h
52、c,Label,線型); %建立菜單項建立菜單項hlw=uimenu(hc,Label,線寬);uimenu(hls,Label,虛線,Call,set(hl,LineStyle,:););uimenu(hls,Label,實線,Call,set(hl,LineStyle,-););uimenu(hlw,Label,加寬,Call,set(hl,LineWidth,2););uimenu(hlw,Label,變細,Call,set(hl,LineWidth,0.5););set(hl,UIContextMenu,hc); %將該快捷菜單和曲線對象聯系起來例:例: 繪制曲線繪制曲線 y=2e-0
53、.5xsin(2x),并建立一個與之相聯系,并建立一個與之相聯系的快捷菜單,用以控制曲線的線型和曲線寬度。的快捷菜單,用以控制曲線的線型和曲線寬度。程序如下:50516.4 GUI程序設計舉例程序設計舉例例例1: 使用Push Button按鈕與靜態文本框設計GUI,在窗口中顯示單擊按鈕次數。(1) 在界面上安裝一個命令按鈕和一個靜態文本框(2) 使用對象的屬性窗口設置控件的屬性52(3) 打開該GUI的 m 文件ex01.m,該文件中已經自動生成了許多代碼。找到函數function pushbutton1_Callback(hObject, eventdata, handles)persis
54、tent c % %聲明函數局部變量聲明函數局部變量if isempty(c) c=0endc=c+1;str=sprintf(Total Clicks: %d,c); %將將c值以整數形式輸出值以整數形式輸出set(handles.text1,String,str);保存程序后,單擊Click按鈕,則在什么的文本框中顯示單擊次數。53例例2 制作一個簡易的加減法計算器。制作一個簡易的加減法計算器。(1) 在界面上放置兩個編輯文本框、一個靜態文本框與兩個命令按鈕(2) 使用對象的屬性窗口設置控件的屬性54(3) 打開該GUI的 m 文件,在函數pushbutton1_Callback 與 pu
55、shbutton2_Callback中加入代碼,如下所示:function pushbutton1_Callback(hObject, eventdata, handles)s1=str2double(get(handles.edit1,String)s2=str2double(get(handles.edit2,String)set(handles.text1,String,s1+s2);function pushbutton2_Callback(hObject, eventdata, handles)s1=str2double(get(handles.edit1,String)s2=str
56、2double(get(handles.edit2,String)set(handles.text1,String,s1-s2);5556例例3 3 使用使用3 3個單選鈕控制靜態文本框的背景顏色個單選鈕控制靜態文本框的背景顏色function radiobutton1_Callback(hObject, eventdata, handles)set(handles.text1,BackGroundColor,r)function radiobutton2_Callback(hObject, eventdata, handles)set(handles.text1,BackGroundColor,g)function radiobutton3_Callback(hObject, eventdata, handles)set(handles.text1,BackGroundColor,b)57function slider1_Callback(hObject, eventdata, handles)v=get(handles.slide
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農村飲水協議書范文
- 裝修代辦保修協議書
- 校園學生住宿協議書
- 象棋比賽免責協議書
- 相關工程維護協議書
- 建行扣稅協議書模板
- 家庭責任協議書范本
- 家有寵物轉讓協議書
- 買房折扣協議書模板
- 贈送財產分割協議書
- GB/T 6433-2025飼料中粗脂肪的測定
- 廠房裝飾裝修施工方案
- 物業管理之工程管理
- 生態農業發展與綠色金融的融合路徑
- 附著齦重建在口腔種植修復中的應用探索
- 《歐式田園風》課件
- 2024年德州市人民醫院高層次衛技人才招聘筆試歷年參考題庫頻考點附帶答案
- 訂單與合同管理制度
- 【MOOC期末】《英美文學里的生態》(北京林業大學)期末中國大學慕課MOOC答案
- 外科患者疼痛護理與管理
- 《家校社協同育人“教聯體”工作方案》專題培訓
評論
0/150
提交評論