必威电竞|足球世界杯竞猜平台

guide
來源:互聯網

GUIDE(Graphical User Interfaces Development Environment)是由窗口,光標、按鍵,菜單,文字說明等對象(Objects)構成的一個用戶界面。

內容介紹

MATLAB的命令行窗口中鍵入guide可以打開GUIDE。這個命令將打開GUIDE Quick Start對話框。它可以看作是一個簡單的GUI應用程序的開發向導。利用它可以使用鼠標方便地在窗體上添加各種各樣的控件。而且它會負責生成一個m文件,里邊定義了各個控件的回調函數,簡化了GUI應用程序的開發。當然MATLAB中GUI應用程序也可以使用純代碼生成。在MATLAB中,關于guide的使用方法,參見幫助文檔:MATLAB/Getting Started/Create Graphical User Interfaces/Laying Out a GUI/Starting GUIDE條目下。

用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產生某種動作或變化,比如實現計算、繪圖等。

程序設計

一. 控件對象及屬性(Object and its attributes of controller))

1. GUI控件對象類型(The mode of controller object)

控件對象是事件響應的圖形界面對象。當某一事件發生時,應用程序會做出響應并執行某些預定的功能子程序(Callback).

2. 控件對象的描述(Description of controller object)

MATLAB中的控件大致可分為兩種,一種為動作控件,鼠標點擊這些控件時會產生相應的響應。一種為靜態控件,是一種不產生響應的控件,如文本框等。

每種控件都有一些可以設置的參數,用于表現控件的外形、功能及效果,既屬性。屬性由兩部分組成:屬性名和屬性值,它們必須是成對出現的。

(1)按鈕(Push Buttons):執行某種預定的功能或操作;

(2)開關按鈕(Toggle Button):產生一個動作并指示一個二進制狀態(開或關),當鼠點擊它時按鈕將下陷,并執行callback(回調函數)中指定的內容,再次點擊,按鈕復原,并再次執行callback中的內容;

(3)單選框(Radio Button):單個的單選框用來在兩種狀態之間切換,多個單選框組成一個單選框組時,用戶只能在一組狀態中選擇單一的狀態,或稱為單選項;

(4)復選框(Check Boxes):單個的復選框用來在兩種狀態之間切換,多個復選框組成一個復選框組時,可使用戶在一組狀態中作組合式的選擇,或稱為多選項;

(5)文本編輯器(Editable Texts):用來使用鍵盤輸入字符串的值,可以對編輯框中的內容進行編輯、刪除和替換等操作;

(6)靜態文本框(Static Texts):僅僅用于顯示單行的說明文字;

(7)滾動條(Slider):可輸入指定范圍的數量值;

(8)邊框(Frames):在圖形窗口圈出一塊區域;

(9)列表框(List Boxes):在其中定義一系列可供選擇的字符串;

(10)彈出式菜單(Popup Menus):讓用戶從一列菜單項中選擇一項作為參數輸入;

(11)坐標軸(Axes):用于顯示圖形和圖象

3. 控件對象的屬性(Attributes of controller object)

用戶可以在創建控件對象時,設定其屬性值,未指定時將使用系統缺省值。

兩大類控件對象屬性:第一類是所有控件對象都具有的公共屬性,第二類是控件對象作為圖形對象所具有的屬性。

A,控件對象的公共屬性

Children取值為空矩陣,因為控件對象沒有自己的子對象

Parent取值為某個圖形窗口對象的句柄,該句柄表明了控件對象所在的圖形窗口

Tag取值為字符串,定義了控件的標識值,在任何程序中都可以通過這個標識值控制該控件對象

Type取值為uicontrol,表明圖形對象的類型

UserDate取值為空矩陣,用于保存與該控件對象相關的重要數據和信息

visible取值為no 或off,

B,控件對象的基本控制屬性

BackgroundColor取值為顏色的預定義字符或RGB數值

Callback取值為字符串,可以是某個M文件名或一小段MATLAB語句,當用戶激活某個控件對象時,應用程序就運行該屬性定義的子程序。

Enable取值為on(缺省值),inactive和off

Extend取值為四元素矢量[0 ,0 width, height],記錄控件對象標題字符的位置和尺寸

ForegroundColor取值為顏色的預定義字符或RGB數值

Max,Min取值都為數值

String取值為字符串矩陣或數組,定義控件對象標題或選項內容

Style取值可以是pushbutton, radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox

Units取值可以是pixels, normalized, inches, centimeters或points

Value取值可以是矢量,也可以是數值,其含義及解釋依賴于控件對象的類型

C,控件對象的修飾控制屬性

FontAngle取值為normal,italic, oblique,

FontName取值為控件標題等字體的字庫名

FontSize取值為數值,

FontWeight取值為points,normalized, inches, centimeters或pixels

HorizontalAligment取值為left,right,定義對齊方式

D,控件對象的輔助屬性

ListboxTop取值為數量值

SliderStop取值為兩元素矢量[minstep,maxstep],用于slider控件

Selected取值為on 或off

SlectionHoghlight取值為on 或off

E,Callback管理屬性

BusyAction取值為cancel或queue

ButtDownFun取值為字符串,一般為某個M文件名或一小段MATLAB程序

Creatfun取值為字符串,一般為某個M文件名或一小段MATLAB程序

DeletFun取值為字符串,一般為某個M文件名或一小段MATLAB程序

HandleVisibility取值為on,callback或off

Interruptible取值為on 或off

二.GUI開發環境(GUI DevelopmentEnvironment, GUIDE)MATLAB提供了一套可視化的創建圖形窗口的工具,使用用戶界面開發環境可方便的創建GUI應用程序,它可以根據用戶設計的GUI布局,自動生成M文件的框架,用戶使用這一框架編制自己的應用程序。MATLAB提供了一套可視化的創建圖形用戶接口(GUI)的工具,包括:*布局編輯器(Layout Edtor)-------在圖形窗口中加入及安排對象。布局編輯器是可以啟動用戶界面的控制面板,上述工具都必須從布局編輯器中訪問,用guide命令可以啟動,或在啟動平臺窗口中選擇GUIDE來啟動布局編輯器。*幾何排列工具(Alignment Tool)-----調整各對象相互之間的幾何關系和位置*屬性編輯器(Property Inspector)-----查詢并設置屬性值*對象瀏覽器Object Browser)-----用于獲得當前MATLAB圖形用戶界面程序中所有的全部對象信息,對象的類型,同時顯示控件的名稱和標識,在控件上雙擊鼠標可以打開該控件的屬性編輯器。*菜單編輯器(Menu Editor)-----建立窗口菜單條的菜單和任何構成布局的彈出菜單在MATLAB中, GUI的設計是以 M文件的編程形式實現的,GUI的布局代碼存儲在M文件和MAT文件中,而在MATLAB6中有了很大的改變,MATLAB6將GUI的布局代碼存儲在 FIG文件中,同時還產生一個M文件用于存儲調用函數,在M文件中不再包含GUI的布局代碼,在開發應用程序時代碼量大大減少。1. 布局編輯器(Layout editor):用于從控件選擇板上選擇控件對象并放置到布局區去,布局區被激活后就成為圖形窗口。在命令窗口輸入GUIDE命令或點擊工具欄中的guide圖標都可以打開空白的布局編輯器,在命令窗口輸入GUIDEfilename 可打開一個已存在的名為filename圖形用戶界面。(1)將控件對象放置到布局區a. 用鼠標選擇并放置控件到布局區內;b. 移動控件到適當的位置;c. 改變控件的大小;d. 選中多個對象的方法;(2)激活圖形窗口 選Tools菜單中的Activate Figure項或點擊工具條上的ActivareFigure按鈕,在激活圖形窗口的同時將存儲M 文件和FIG文件,如所建立的布局還沒有進行存儲,用戶界面開發環境將打開一個Save As對話框,按輸入的文件的名字,存儲一對同名的M文件和帶有.fig擴展名的FIG文件。(3)運行GUI程序 在命令窗口直接鍵入文件名或用openfig, open或hgload命令運行GUI程序。(4)布局編輯器參數設置 選File菜單下的Preferences菜單項打開參數設置窗口,點擊樹狀目錄中的GUIDE,既可以設置布局編輯器的參數。(5)布局編輯器的彈出菜單 在任一控件上按下鼠標右鍵,會彈出一個菜單,通過該菜單可以完成布局編輯器的大部分操作。2. 幾何位置排列工具(Alignment tool) 用于調節各控件對象之間的相對位置。3. 用屬性編輯器設置控件屬性(Set attributes of controller with PropertyInspector) 在屬性編輯器中提供了所有可設置的屬性列表并顯示出當前的屬性。(1)屬性編輯器(Opening PropertyInspector):三種方法:1. 用工具欄上的圖標打開;2. 從View菜單中選擇Property Inspector菜單項;3. 在按鼠標右鍵彈出的Property Inspector菜單中選擇菜單項。(1)使用屬性編輯器(Using Property Inspector)a. 布置控件b. 定義文本框的屬性c. 定義坐標系d. 定義按鈕屬性e. 定義復選框4. 菜單編輯器(Menu Editor):包括菜單的設計和編輯,菜單編輯器有八個快捷鍵,可以利用它們任意添加或刪除菜單,可以設置菜單項的屬性,包括名稱(Label)、標識(Tag)、選擇是否顯示分隔線(Separator above this item)、是否在菜單前加上選中標記(Item ischecked)、調用函數(Callback)。5. 對象瀏覽器(Object Browsers):用于瀏覽當前程序所使用的全部對象信息,可以在對象瀏覽器中選種一個或多個控件來打開該控件的屬性編輯器。

三、GUI程序設計(GUI Program 設計)

包括圖形界面的設計和功能設計兩個方面

例1:用于繪圖和圖形旋轉的GUI:

1、布置控件:一個坐標系、一個文本框、一個復選框,一個按鈕

2、定義文本框的屬性:String---簡單設計示例,FontName---隸書,FontSize--22

3、定義坐標系: Visible—off

4、定義按鈕屬性: String—繪圖,FontName,ForegroundColor, ontSize, BackgroundColor,Callback---surf(peaks(30))

5、定義復選框: String—rotate3D,Callback—rotate3d

例2:設計一個簡單信號分析儀的程序,要求根據輸入的兩個頻率和時間間隔,計算函數x=sin(2πf1t)+sin(2πf2t) 的值,并對函數進行快速傅立葉變換,最后分別繪制時域和頻域的曲線。

1. 設計圖形界面(GUI 設計)

設計步驟:

(1)在布局編輯器中布置控件,

(2)使用幾何位置排列工具對控件的位置進行調整;

(3)設計控件的屬性;

(4)設置其他繪圖屬性。

2. 設置控件的標識(Set the Tag of controller)

控件的標識(Tag)是對于各控件的識別,每個控件載創建時都會由開發環境自動產生一個標識,在程序設計中,為了編輯、記憶和維護的方便,一般為控件設置一個新的標識。本例設置第一個坐標軸的標識為:頻率_axes,用于顯示頻域圖形; 第二個坐標軸的標識為:時間_axes,用于顯示時域圖形。三個文本編輯框的標識為f1_input, f2_input, t_input,分別用于輸入兩個頻率和自變量時間的間隔.

3. 編寫代碼(Editcode)

GUI圖形界面的功能,還是要通過一定的設計思路和計算方法,由特定的程序來實現。為了實現程序的功能,還需要在運行程序前編寫一些代碼,完成程序中變量的賦值、輸入輸出、計算及繪圖等工作。

一般方法為,內容為:

%(1)設置對象的初始值;

%分別設置三個文本編輯框的初始值為:

2012年世界一級方程式錦標賽_input=20

f2_input=50

f3_input=0:0.001:0.5

%(2)編寫代碼:

%1)從GUI獲得用戶輸入的數據,本例中輸入的三個數據

%分別為頻率1、頻率2和時間間隔。

f1=str2double(get(handles.f1_input,'String'));

f2=str2double(get(handles.f2_input,'String'));

t=eval(get(handles.t_input,'String'));

%2)計算數據,計算函數值,按指定點進行快速傅立葉變

%換,并計算頻域的幅值和頻域分辨率。

x=sin(2*pi*f1*t)+sin(2*pi*f2*t);

y=fft(x,512);

m=y.*conj(y)/512;

f=1000*(0:256)/512;

%3)在第一個坐標軸中繪制頻域曲線。

axes(handles.頻率_axes)

plot(f,m(1:257))

set(handles.frequency_axes,'Xminor真蜱目','on')

gridon

%4)在第二個坐標軸中繪制時域曲線。

axes(handles.時間_axes)%選擇適當的坐標軸

plot(t,x)

set(handles.time_axes,'XminorTick','on')

gridon

運行程序(Running program)

例3 :制作一個曲面光照效果的演示界面,如圖所示,三個彈出式菜單分別用于選擇曲面形式、色彩圖、光照模式和反射模式,三個滾動條用于確定光源的位置,一個按鈕用于退出演示。

制作要點:

(1)建立一個靜態文本,用于顯示界面的標題:光照效果演示;

(2)建立坐標軸對象,用于顯示圖形;

(3)建立四個下拉菜單,分別用于選擇繪圖表面的形狀、色圖、光照模式和反射模式,每個下拉菜單的上方都有一個靜態文本用于說明菜單的作用;

(4)在一個frame上建立三個滑條用于確定光源的位置,并在frame上方加一說明;

(5)建立一個按鈕用于退出演示;

callback函數的內容為:

functionvarargout = pushbutton1_Callback(h, event控制資料公司, handles, varargin)

delete(handles.figure1)

functionvarargout = popupmenu1_Callback(h, eventdata, handles, varargin)

VAL=get(h,'value');

switchval

case1

surf(peaks);

case2

Sphere(30);

case3

membrane

case4

[x,y]=meshgrid(-4:.1:4);

r=sqrt(x.^2+y.^2)+eps;

z=sinc(r);

surf(x,y,z)

仙后座e5

[x,y]=meshgrid([-1.5:.3:1.5],[-1:0.2:1]);

z=sqrt(4X^2/9-y.^2/4);

surf(x,y,z);

case6

t=0:pi/12:3*pi;

r=丙烯腈-丁二烯-苯乙烯共聚物(exp(-t/4).*sin(t));

[x,y,z]=cylinder(r,30);

surf(x,y,z);

end

shadinginterp

light('Position',[-3-2 1]);

axisoff

functionvarargout = radiobutton1_Callback(h, event控制資料公司, handles, varargin)

set(h,'value',1)

set(handles.radiobutton2,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton4,'value',0)

lightingflat

functionvarargout = radiobutton2_Callback(h, eventdata, handles, varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton4,'value',0)

lightinggouraud

functionvarargout = radiobutton3_Callback(h, event控制資料公司, handles, varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton2,'value',0)

set(handles.radiobutton4,'value',0)

lightingphong

functionvarargout = radiobutton4_Callback(h, eventdata, handles, varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton3,'value',0)

lightingnone

functionvarargout = popupmenu2_Callback(h, event控制資料公司, handles, varargin)

VAL=get(h,'value');

switchval

case1

colormap(jet)

case2

colormap(H.O.T.)

case3

colormap(cool)

case4

colormap(copper)

仙后座e5

colormap(pink)

case6

colormap(spring)

case7

colormap(summer)

case8

colormap(autumn)

case9

colormap(winter)

end

functionvarargout = popupmenu3_Callback(h, eventdata, handles, varargin)

val=get(h,'value');

switchval

case1

lighting flat

case2

lighting gouraud

case3

lighting phong

case4

lighting none

end

functionvarargout = popupmenu4_Callback(h, event控制資料公司, handles, varargin)

VAL=get(h,'value');

switchval

case1

material shiny

case2

material dull

case3

material metal

case4

material default

end

functionvarargout = slider1_Callback(h, eventdata, handles, varargin)

val=get(h,'value');

set(handles.edit1,'string',num2str(val));

lx==VAL;ly=get(handles.slider2,'value'); ly=get(handles.slider3,'value');

light('Position',[xy z]);

functionvarargout = edit1_Callback(h, event控制資料公司, handles, varargin)

str=get(h,'string');

set(handles.slider1,'value',str2num(str));

lx==str2num(str);ly=get(handles.slider2,'value'); ly=get(handles.slider3,'value');

light('Position',[xy z]);

functionvarargout = slider2_Callback(h, eventdata, handles, varargin)

VAL=get(h,'value');

set(handles.edit2,'string',num2str(val));

lx=get(handles.slider1,'value');lx==val; ly=get(handles.slider3,'value');

light('Position',[xy z]);

functionvarargout = edit2_Callback(h, event控制資料公司, handles, varargin)

str=get(h,'string');

set(handles.slider2,'value',str2num(str));

functionvarargout = slider3_Callback(h, eventdata, handles, varargin)

VAL=get(h,'value');

set(handles.edit3,'string',num2str(val));

functionvarargout = edit3_Callback(h, eventdata, handles, varargin)

str=get(h,'string');

set(handles.slider3,'value',str2num(str));

*對話框設計:在圖形用戶界面程序設計中,對話框是重要的信息顯示和獲取輸入數據的用戶界面對象。

1、公共對話框:

公共對話框是利用windows資源的對話框,包括文件打開、文件保存、顏色設置、字體設置、打印設置等。

1) 文件打開對話框:用于打開文件

uigetfile

uigetfile(‘FilterSpec’)

uigetfile(‘FilterSpec’,’DIALOGTitle’)

uigetfile(‘FilterSpec’,’DialogTitle’,x,y)

[fname,pname]=uigetfile(…)

2) 文件保存對話框:用于保存文件

uiputfile

uiputfile(‘InitFile’)

uiputfile(‘InitFile’,’DialogTitle’)

uiputfile(‘InitFile’,’DialogTitle’,x,y)

[fname,pname]=uiputfile(…)

3) 顏色設置對話框:用于圖形對象顏色的交互設置

c=uisetcolor(‘h_or_c,’DIALOGTitle’)

4) 字體設置對話框:用于字體屬性的交互式設置

uisetfont

uisetfont(h)

uisetfont(S)

uisetfont(h,’DialogTitle’)

uisetfont(S,’DialogTitle’)

S=uisetfont(…)

5)打印設置對話框:用于打印頁面的交互式設置

dlg=pagesetupdlg(fig)

pagedlg

pagedlg(fig)

6) 打印預覽對話框:用于對打印頁面進行預覽

printpreview

printpreview(f)

7) 打印對話框:

printdlg

printdlg(fig)

printdlg(‘-crossPlatform’,fig)

printdlg(-‘setup’,fig)

2、MATLAB專用對話框

1)錯誤信息對話框:用于提示錯誤信息

errordlg打開默認的錯誤信息對話框

errordlg(‘errorstring’)打開顯示’errorstring’信息的錯誤信息對話框

errordlg(‘errorstring’,’dlgname’)打開顯示’errorstring’信息的錯誤信息對話框,對話框的標題由‘dlgname’指定

erordlg(‘errorstring’,’dlgname’,’on’)打開顯示’errorstring’信息的錯誤信息對話框,對話框的標題由‘dlgname’指定. 如果對話框已存在,’on’參數將對話框顯示在最前端。

h=errodlg(…)返回對話框句柄

例:errordlg('輸入錯誤,請重新輸入','錯誤信息')

2) 幫助對話框:用于幫助提示信息

helpdlg 打開默認的幫助對話框

helpdlg(‘helpstring’)打開顯示’errorstring’信息的幫助對話框,

helpdlg(‘helpstring’,’dlgname’)打開顯示’errorstring’信息的幫助對話框,對話框的標題由‘dlgname’指定

h=helpdlg(…)返回對話框句柄

例:helpdlg('矩陣尺寸必須相等','在線幫助')

3) 輸入對話框:用于輸入信息

answer=inputdlg(prompt)打開輸入對話框,prompt為單元數組,用于定義輸入數據窗口的個數和顯示提示信息,answer為用于存儲輸入數據的單元數組。

answer=inputdlg(prompt,title)與上者相同,title確定對話框的標題。

answer=inputdlg(prompt,title,lineNo)參數lineNo可以是標量、列矢量或m×2階矩陣,若為標量,表示每個輸入窗口的行數均為lineNo;若為列矢量,則每個輸入窗口的行數由列矢量lineNo的每個元素確定;若為矩陣,每個元素對應一個輸入窗口,每行的第一列為輸入窗口的行數,第二列為輸入窗口的寬度。

answer=inputdlg(prompt,title,lineNo,de fAns) 參數DEFans為一個單元數組,存儲每個輸入數據的默認值,元素個數必須與prompt 所定義的輸入窗口數相同,所有元素必須是字符串。

answer=inputdlg(prompt,title,lineNo,de fAns,Sesize) 參數resize決定輸入對話框的大小能否被調整,可選值為on或off.

例:prompt={'Input Name','Input age'};

title='InputName and Age';

lines=';

DEF={'JohnSmith','35'};

answer=inputdlg(prompt,title,lines,def);

4) 列表選擇對話框:用于在多個選項中選擇需要的值

[selection,ok]=listdlg(‘Liststring’,S,…)輸出參數selection為一個矢量,存儲所選擇的列表項的索引號,

輸入參數為可選項’Liststring’(單元數組), ’SelectionMode’(’single’或’multiple’,’ListSize’([wight,height]), ’Name’ (對話框標題)等

5) 信息提示對話框:用于顯示提示信息

msgbox(message)打開信息提示對話框,顯示message信息。

msgbox(message,title)title確定對話框標題。

msgbox(message,title,’icon’)icon用于顯示圖標,可選圖標包括:none(無圖標)/error/help/warn/custom(用戶定義)

msgbox(message,title,’custom’,icondata,iconcmap)當使用用戶定義圖標時,icondata為定義圖標的圖像數據,iconcmap為圖像的色彩圖。

msgbox(…,’creatmode’)選擇模式creatmode,選項為:modal, non_modal,和replace。

h=msgbox(…) 返回對話框句柄

6) 問題提示對話框:用于回答問題的多種選擇

button=questdlg(‘qstring’)打開問題提示對話框,有三個按鈕,分別為:yes,no和cancel,’questdlg’確定提示信息。

button=questdlg(‘qstring’,’title’)title確定對話框標題。

button=questdlg(‘qstring’’title’,’default’)當按回車鍵時,返回default值default 必須是yes,no或cancel之一。

button=questdlg(‘qstring’,’title’,’str1’,’str2’,’default’)打開問題提示對話框,有兩個按鈕,分別由str1和str2確定,’qstdlg’確定提示信息,default必須是str1或str2之一。

button=questdlg(‘qstring’,’title’,’str1’,’str2’,’str3’,’default’) 打開問題提示對話框,有三個按鈕,分別由str1,str2和str3確定,’qstdlg’確定提示信息,default必須是str1, str2或str3之一。

7) 進程條:以圖形方式顯示運算或處理的進程

h=waitbar(x,’title’)顯示以title為標題的進程條,x為進程條的比例長度,其值必須在0到1之間,h為返回的進程條對象的句柄。

waitbar(x,’title’,’creatcancelbtn’,’button_callback’)在進程條上使用creatcancelbtn參數創建一個撤銷按鈕,在進程中按下撤銷按鈕將調用button_callback函數。

waitbar(…,property_name,property_value,…)選擇其它由prompt_name定義的參數,參數值由prompt_value指定。

例:

h=waitbar(0,'pleaswait...');

fori=1:10000

waitbar(i/10000,h)

end

close(h)

8)警告信息對話框:用于提示警告信息

h=warndlg(‘warningstring’,’dlgname’)打開警告信息對話框,顯示warningstring信息,dlgname確定對話框標題,h為返回對話句柄。

參考資料 >

生活家百科家居網