MatlabGUIDE使用說明MatlabGUI界面_第1頁
MatlabGUIDE使用說明MatlabGUI界面_第2頁
MatlabGUIDE使用說明MatlabGUI界面_第3頁
MatlabGUIDE使用說明MatlabGUI界面_第4頁
MatlabGUIDE使用說明MatlabGUI界面_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、去年做了一些關(guān)于MatlabGUI的程序,現(xiàn)在又要做相關(guān)的東西,回想起來,當(dāng)時(shí)很多經(jīng)驗(yàn)沒有記錄下來,現(xiàn)在回顧起來始終覺得不爽,所以從現(xiàn)在開始,一定要勤寫記錄。從簡單的例子說起吧。創(chuàng)建MatlabGUI界面通常有兩種方式:1 ,使用.m文件直接動態(tài)添加控件2 .使用GUIDE快速的生成GUI界面顯然第二種可視化編輯方法算更適合寫大型程序。一:創(chuàng)建GUI1 .在.m文件中動態(tài)添加例如h_main=figure('name','ademoofguidesign','menubar','none','numbertitle'

2、;,'off','position',100100300100);h_edit=uicontrol('style','edit','backgroundcolor',111,'position',20205020,.'tag','myedit','string','1','horizontalalignment','left');h_but1=uicontrol('style','

3、pushbutton','position',20505020,'string','INC',.'callback','v=eval(get(h_edit,"string'');',.'set(h_edit,''string'',int2str(v+1);');h_but2=uicontrol('style','pushbutton','position',80505020,'s

4、tring','DEC',.'callback','v=eval(get(h_edit,''string");','set(h_edit,"string",int2str(v-1);');2 .使用GUIDE幫助創(chuàng)建GUI在Command里面輸入GUIDE或者從菜單里面,或者從快捷按鈕均可進(jìn)入GUIDE新建并且保存后,會生成相應(yīng)的fig文件和m文件,在Layout編輯視圖,可以使用如下工具:LayoutEditor:布局編輯器;AlignmentTool:對齊工具;Proper

5、tyInspector:對象屬性觀察器;ObjectBrowser:對象瀏覽器;MenuEditor:菜單編輯器。二:使用控件新建一個(gè)布局(窗口),可以在新窗口中添加如下控件1.靜態(tài)文本(StaticText)3.列表框(Listbox)控件5,按鈕(PushButton)控件7.單選按鈕(RadioButton)控件9.檢查框(CheckBox)控件2.編輯框(EditText)控件4.滾動條(Slider)控件6.開關(guān)按鈕(ToggleButton)控件8,按鈕組(ButtonGroup)控件10.列表框(Listbox)控件11 .彈出式菜單(PopupMenu)控件12 .坐標(biāo)軸(Ax

6、es)控件13.面板(Panel)控件每一個(gè)控件都有自己的屬性常規(guī)屬性有:一、控件風(fēng)格和外觀(1) BackgroundColor:設(shè)置控件背景顏色,使用RGB或顏色定義。(2) CData:在控件上顯示的真彩色圖像,使用矩陣表示。(3) ForegroundColor:文本顏色。(4) String屬性:控件上的文本,以及列表框和彈出菜單的選項(xiàng)。(5) Visible:控件是否可見。二、對象的常規(guī)信息(1) Enable屬性:表示此控件的使能狀態(tài),設(shè)置為on”,表示可選,為“off時(shí)則表示不可選。(2) Style:控件對象類型。(3) Tag:控件表示(用戶定義)。(4) TooltipS

7、tring屬性:提示信息顯示。當(dāng)鼠標(biāo)指針位于此控件上時(shí),顯示提示信息。(5) UserData:用戶指定數(shù)據(jù)。(6) Position:控件對象的尺寸和位置。(7) Units:設(shè)置控件的位置及大小的單位(8) 有關(guān)字體的屬性,如FontAngle,FontName等。三、控件回調(diào)函數(shù)的執(zhí)行(1) BusyAction:處理回調(diào)函數(shù)的中斷。有兩種選項(xiàng):即Cancel:取消中斷事件,queue:排隊(duì)(默認(rèn)設(shè)置)。(2) ButtonDownFcn屬性:按鈕按下時(shí)的處理函數(shù)。(3) CallBack屬性:是連接程序界面整個(gè)程序系統(tǒng)的實(shí)質(zhì)性功能的紐帶。該屬性值應(yīng)該為一個(gè)可以直接求值的字符串,在該對象

8、被選中和改變時(shí),系統(tǒng)將自動地對字符串進(jìn)行求值。(4) CreateFcn:在對象產(chǎn)生過程中執(zhí)行的回調(diào)函數(shù)。(5) DeleteFcn:刪除對象過程中執(zhí)行的回調(diào)函數(shù)。(6) Interruptible屬性:指定當(dāng)前的回調(diào)函數(shù)在執(zhí)行時(shí)是否允許中斷,去執(zhí)行其他的函數(shù)。四、控件當(dāng)前狀態(tài)信息(1) ListboxTop:在列表框中顯示的最頂層的字符串的索引。(2) Max:最大值。(3) Min:最小值。(4) Value:控件的當(dāng)前值。你可以使用屬性編輯器來設(shè)置屬性三:寫回調(diào)函數(shù)CallBack每個(gè)控件都有幾種回調(diào)函數(shù),右鍵選中的控件一般會有如下菜單:然后就可以跳轉(zhuǎn)到相應(yīng)的Editor中編輯代碼,GU

9、IDE會自動生成相應(yīng)的函數(shù)體,函數(shù)名,名稱一般是控件Tag+Call類型名參數(shù)有三個(gè)(hObject,eventdata,handles)其中hObject為發(fā)生事件的源控件,eventdata為事件數(shù)據(jù)結(jié)構(gòu),handles為傳入的對象句柄CreateFcn是在控件對象創(chuàng)建的時(shí)候發(fā)生(一般為初始化樣式,顏色,初始值等)DeleteFcn實(shí)在空間對象被清除的時(shí)候發(fā)生ButtonDownFcn和KeyPressFcn分別為鼠標(biāo)點(diǎn)擊和按鍵事件CallbackCallBack為一般回調(diào)函數(shù),因不同的控件而已異。例如按鈕被按下時(shí)發(fā)生,下拉框改變值時(shí)發(fā)生,sliderbar拖動時(shí)發(fā)生等等。四:句柄圖形之間

10、的層次關(guān)系可以創(chuàng)建圖形句柄的常見函數(shù)1 .figure函數(shù):創(chuàng)建一個(gè)新的圖形對象。2 .newplot函數(shù):做好開始畫新圖形對象的準(zhǔn)備。3 .axes函數(shù):創(chuàng)建坐標(biāo)軸圖形對象。4 .line函數(shù):畫線。5 .patch函數(shù):填充多邊形。6 .surface函數(shù):繪制三維曲面。7 .image函數(shù):顯示圖片對象。8 .uicontrol函數(shù):生成用戶控制圖形對象。9 .uimenu函數(shù):生成圖形窗口的菜單中層次菜單與下一級子菜單。幾個(gè)實(shí)用的小函數(shù):uigetfile選擇文件對話框uiputfile保存文件對話框uisetcolor設(shè)置顏色對話框fontsetcolor設(shè)置字體對話框msgbox消

11、息框warndlg警告框helpdlg消息框不過如果要讓父窗口不可用,你需要使用uiwait來定焦于用戶對話框。例如:h=helpdlg('Pleasepressme!','Attention');uiwait(h);四:獲取與設(shè)置對象屬性常用函數(shù):gcf函數(shù):獲得當(dāng)前圖形窗口的句柄gca函數(shù):獲得當(dāng)前坐標(biāo)軸的句柄gco函數(shù):獲得當(dāng)前對象的句柄gcbo函數(shù):獲得當(dāng)前正在執(zhí)行調(diào)用的對象的句柄gcbf函數(shù):獲取包括正在執(zhí)行調(diào)用的對象的圖形句柄delete函數(shù):刪除句柄所對應(yīng)的圖形對象findobj函數(shù):查找具有某種屬性的圖形對象設(shè)置方法:(1)get函數(shù)返回某些對象

12、屬性的當(dāng)前值。例如:p=get(obj,'Position');(2)函數(shù)set改變句柄圖形對象屬性,例如:set(obj,'Position',vect);五:函數(shù)調(diào)用在一個(gè)m文件中,可以定義多個(gè)函數(shù),但是文件名一定要與第一個(gè)函數(shù)(主函數(shù))一致,該文件中其他函數(shù)則為本文件的私有函數(shù),外部不可訪問(可以通過參數(shù)調(diào)用的方法訪問,下面會描述)例如在一個(gè)程序中,創(chuàng)建一個(gè)fig后,會生成這樣一個(gè)m文件:mfilename,.functionvarargout=febirdfun(varargin)gui_Singleton=1;gui_State=struct('

13、;gui_Name','gui_Singleton',gui_Singleton,.'gui_OutputFcn','gui_LayoutFcn',.'gui_Callback',);'gui_OpeningFcn',febirdfun_OpeningFcn,.febirdfun_OutputFcn,.ifnargin&&ischar(varargin1)gui_State.gui_Callback=str2func(varargin1);endifnargoutvarargout1:nar

14、gout=gui_mainfcn(gui_State,varargin:);elsegui_mainfcn(gui_State,varargin:);end解析一下這個(gè)主函數(shù):首先gui_State是一個(gè)結(jié)構(gòu),指定了figure打開和輸出函數(shù),開始gui_CallBack為空,如果輸入?yún)?shù)個(gè)數(shù)不為0,接下來將輸入第一個(gè)參數(shù)傳遞給gui_State.callback接下來用交給gui_mainfcn函數(shù)處理,gui_mainfcn根據(jù)gui_State和傳入?yún)?shù)來確定是執(zhí)子函數(shù),還是打開fig文件和運(yùn)行OpeningFcn和OutputFcn。如過gui_Callback為空,那么就運(yùn)行打開主窗

15、口fig文件,否則,調(diào)用子函數(shù)這個(gè)函數(shù)的作用有:1 .當(dāng)輸入不帶參數(shù)的時(shí)候,能夠打開fig文件,并且初始化控件2 .當(dāng)指定需要調(diào)用的函數(shù)名時(shí),可以作為其他控件callback使用(實(shí)則調(diào)用同文件中的子函數(shù))例如,在某一個(gè)控件的callback里面這樣寫:(febrdfun為主函數(shù))febirdfun("push_button_Callback",gcbf,)這樣的調(diào)用就可以調(diào)用文件里面的子函數(shù)。當(dāng)然也可以使用其他文件里面的函數(shù)作為callback,不過那樣的話,數(shù)據(jù)傳遞會麻煩一些。下面看figureOpenningFunction%=functionMain_Opening

16、Fcn(hObject,eventdata,handles,varargin)handles.output=hObject;%通常在這里面定義自己的數(shù)據(jù)結(jié)構(gòu)例如s=struct("P1",v1."P2",v2);handles.MyStruct=s;%更新handles數(shù)據(jù)結(jié)構(gòu)非常重要!guidata(hObject,handles);%=functionvarargout=Main_OutputFcn(hObject,eventdata,handles)varargout1=handles.output;這個(gè)函數(shù)是輸出返回值的定義注意:matlab中,

17、function對應(yīng)的end可以沒有,但是隨著版本的更新,end將會被要求。六:數(shù)據(jù)傳遞在matlabGUI程序中進(jìn)行值傳遞我經(jīng)常使用的兩種方法:1 .利用主函數(shù)的handles數(shù)據(jù)結(jié)構(gòu)傳值例如在某一個(gè)圖像窗口句柄中有一個(gè)對象handles(可以定義自己的數(shù)據(jù)結(jié)構(gòu))那么在一個(gè)子Callback函數(shù)中,可以通過handles傳遞數(shù)據(jù):functionsliderbar1_Callback(hObject,eventdata,handles)%eg1v1=get(hObject,'value');obj=handles.Text1%直接定位Tag為Text1的控件set(obj,&

18、#39;value',v1);%eg2handles.MyStruct.P1=v1;%更改handles中的數(shù)據(jù)guidata(hObject,handles);%更新handles!重要end2 .利用控件的UserData來傳值每一個(gè)控件一般都有一個(gè)屬于自己的自定義域,userData,你可以定義這樣一個(gè)域用來保存自己的數(shù)據(jù),例如在定義timer的TimerFcn中t1=timer('TimerFcn',Timer1Fcn,'ErrorFcn',Timer1ErrorFcn,'Period',1.0,'ExecutionMode','fixedrate');t1.Userfata=handles.MyStruct;這里Timer

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論