8.3 matlab图形用户界面设计方法
1、圖形用戶界面的組成
圖形用戶界面( Graphical User Interface,GUI):用戶與計算機進行信息交流的窗口。
設(shè)計圖形用戶界面的方法
(1)調(diào)用建立用戶界面控件的函數(shù)。
(2)使用MATLAB提供的GUIDE工具進行可視化設(shè)計。
2、控件對象及其操作
(1)常用控件
①輸入和輸出類控件:編輯框、靜態(tài)文本、列表框、滑動條等。
②實施確認、選擇操作類控件:按鈕、雙位按鈕、單選按鈕、
復(fù)選框等。
(2)建立控件對象
uicontrol函數(shù)用于建立控件對象,其調(diào)用格式為:
句柄變量=uicontrol(圖形窗口句柄,屬性1,屬性值1,屬性2,屬性值2,…)
其中,屬性及其取值決定了控件的特征。若省略圖形窗句柄,默認在當前圖形窗建立控件對象。
( 3)控件對象的基本控制屬性
①Style屬性: 定義控件對象的類型,例如’pushbutton’表示按鈕對象,'edit’表示編輯框,等等。
②String屬性: 定義控件對象的說明文字。Tag屬性:標識控件對象。
③Enable屬性: 控制控件對象是否可用
④Position屬性: 定義控件對象的位置和大小,其取值形式為[x, y, w, h]。
⑤Callback屬性: 屬性值是描述命令的字符串或函數(shù)句柄。當選中控件時,系統(tǒng)將自動執(zhí)行字符串描述的命令或調(diào)用句柄所代表的函數(shù),實施相關(guān)操作。
回調(diào)函數(shù)的定義格式:
function 函數(shù)名(source, eventdata)
…
end
參數(shù)source是發(fā)生事件的源控件對象句柄,eventdata存儲諸事件數(shù)據(jù)。
例1:在圖形窗口中建立三個按鈕對象,當單擊按鈕時分別繪制正弦曲線、顯示或隱藏坐標軸的網(wǎng)格、清除坐標軸的圖形。
ha = axes('Units','pixels','Position',[40 40 360 360]); btgrid = uicontrol('Style','pushbutton','String','網(wǎng)格',... 'Position',[450 120 50 25],'Callback','grid'); %顯示或隱藏坐標軸的網(wǎng)格btncla = uicontrol('Style','pushbutton','String','清除',... 'Position',[450 80 50 25],'Callback','cla'); %清除坐標軸的圖形btplot = uicontrol('Style','pushbutton','String','繪圖',... 'Position',[450 160 50 25]); %繪圖稍復(fù)雜,需設(shè)置為回調(diào)函數(shù),回調(diào)函數(shù)要單獨保存為一個文件 btplot.Callback = @plot_sin; %設(shè)置“繪圖“按鈕的Callback屬性值是plot_sin 函數(shù)的句柄 %plot_sin函數(shù)function plot_sin(source,eventdata)t = -pi:pi/20:pi;plot(t,sin(t)); end
3、菜單對象及其操作
(1)建立菜單對象
uimenu函數(shù)用于創(chuàng)建、設(shè)置、修改菜單,其調(diào)用格式為:
一級菜單項句柄=uimenu(圖形窗口句柄,屬性1,屬性值1,屬性2,屬性值2,…)
子菜單項句柄=uimenu(上級菜單項句柄,屬性1,屬性值1,屬性2,屬性值2,…)
(2)菜單屬性
①Label屬性: 用于定義菜單項的名字。
②Accelerator屬性: 用于定義菜單項的快捷鍵。
③Checked屬性: 指示菜單項是否已選中。
④Enable屬性: 控制菜單項的可選擇性。
⑤Separator屬性: 用于在菜單中添加分隔線。
例2:在例1的界面中添加“圖形選項”菜單項,其中包括一個二級菜單項“線型”,其下又有3個子菜單項,分別為“實線”、“虛線”、“雙劃線”。
ha = axes('Units','pixels','Position',[40 40 360 360]); btgrid = uicontrol('Style','pushbutton','String','網(wǎng)格',... 'Position',[450 120 50 25],'Callback','grid'); %顯示或隱藏坐標軸的網(wǎng)格btncla = uicontrol('Style','pushbutton','String','清除',... 'Position',[450 80 50 25],'Callback','cla'); %清除坐標軸的圖形btplot = uicontrol('Style','pushbutton','String','繪圖',... 'Position',[450 160 50 25]); %繪圖稍復(fù)雜,需設(shè)置為回調(diào)函數(shù),回調(diào)函數(shù)要單獨保存為一個文件 btplot.Callback = @plot_sin; %設(shè)置“繪圖“按鈕的Callback屬性值是plot_sin 函數(shù)的句柄hopt = uimenu(gcf,'Label','圖形選項','Accelerator','L'); %hopt是一級菜單項“圖形選項”的尚柄 hLStyle = uimenu(hopt,'Label','線型','Tag','LStyle' ,'Enable', 'off'); %二級菜單項‘線型’的句柄,以hopt為父對象,該菜單項不可用 hL_Solid = uimenu(hLStyle,'Label','實線', 'Tag','Solid','Callback',@MLine_Type); %三級菜單項‘實線’的句柄,以hLStyle為父對象 hL_Dotted = uimenu(hLStyle,'Label','虛線','Tag','Dotted','Callback', @MLine_Type); %三級菜單項‘虛線’的句柄,以hLStyle為父對象 hL_Dashed = uimenu(hLStyle,'Label','雙劃線','Tag','Dashed','Callback',@MLine_Type); %三級菜單項‘雙劃線’的句柄,以hLStyle為父對象 %MLine_Type函數(shù)function MLine_Type(source,eventdata)hline = findobj('Type','line');if strcmp(source.Tag,'Solid')==1hline.LineStyle='-';elseif strcmp(source.Tag,'Dotted')==1hline.LineStyle=':';elseif strcmp(source.Tag,'Dashed')==1hline.LineStyle='--';end end %plot_sin函數(shù)function plot_sin(source,eventdata)t = -pi:pi/20:pi;plot(t,sin(t));h1 = findobj('Tag','LStyle');h1.Enable = 'On'; end總結(jié)
以上是生活随笔為你收集整理的8.3 matlab图形用户界面设计方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8.2 matlab曲线对象和曲面对象(
- 下一篇: 8.4 matlab用户界面设计工具