您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > matlab GUI 编程
1第8章GUI编程8.1GUI基础8.1.1GUI介绍GUI(GraphicalUserInterface,MATLAB图形用户界面)编程是MATLAB编程应用的核心之一,是一种包含多种控件对象的图形窗口,可以支持用户进行交互操作。GUI控件包含菜单、工具栏、按钮、对话框等多种控件。典型的GUI如图8-1所示。2图8-1一个典型的GUI38.1.2创建GUI1.在命令窗口输入guide2.单击MATLAB工具栏中的按钮利用1.和2.两种方法得到界面如图8-2所示。4图8-2GUIDE快速启动对话框5从GUIDE快速启动对话框,可以建立新的GUI,也可以打开已存在的GUI。要打开当前路径下的GUI,也可以直接在命令窗口输入:guidefilename创建新的GUI,在图8-2中有四种选择。6(1)BlankGUI一个空的样板。(2)GUIwithUicontrols打开包含一些Uicontrol对象的GUI编辑器。(3)GUIwithaxesandMenu打开包含菜单栏和一些坐标轴图形对象的GUI编辑器。(4)ModalQuestionDialog打开一个模态对话框的编辑器。7在四种选择中,一般采用默认的第一种,单击ok按钮后,进入GUI编辑界面,如图8-3所示。在该图中,可以建立GUI。图8-3GUI编辑界面8由图8-3可知道,GUI编辑界面包含GUI对象选择区(窗口左边)、GUI工具栏、GUI布局区(窗口右边)、状态栏4部分。GUI对象选择区,如图8-4所示。9图8-4GUI控件对象10GUI工具栏,如图8-5所示。图8-5GUI工具栏11在图8-5中,各工具从左到右分别是:对齐对象、菜单编辑器、Tab顺序编辑器、M文件编辑器、属性查看器、对象浏览器、运行界面。在图8-3所示的界面中,可以用下面步骤创建GUI。创建GUI对象添加控件编写回调函数执行GUI。12也可以在M文件中编写代码实现创建GUI。例8-1创建如图8-1所示的GUI。启动GUIDE,得到如图8-2所示界面,选择BlankGUI,点ok按钮,得到如图8-3所示界面将三个按钮控件、一个坐标轴对象控件、一个弹出菜单控件、一个静态文本控件放入GUI布局窗口中,得到如图8-6所示界面。13图8-6GUI设计界面14在图8-6中,利用属性查看器将三个按钮的string属性值分别修改为surf、mesh、contour,将弹出菜单的string属性值修改为(分三行)Peaks、Membrane、Sinc将statictext的string属性值修改为selectData得到如图8-7的界面。15图8-7修改string属性的GUI16然后,打开M文件,创建如下回调函数,运行该文件,则得到图8-1的界面和结果。functionvarargout=simple_gui(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@simple_gui_OpeningFcn,...'gui_OutputFcn',@simple_gui_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);17ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end18functionsimple_gui_OpeningFcn(hObject,eventdata,handles,varargin)handles.peaks=peaks(35);handles.membrane=membrane;[x,y]=meshgrid(-8:.5:8);r=sqrt(x.^2+y.^2)+eps;sinc=sin(r)./r;handles.sinc=sinc;19handles.current_data=handles.peaks;surf(handles.current_data)handles.output=hObject;guidata(hObject,handles);20functionvarargout=simple_gui_OutputFcn(hObject,eventdata,handles)varargout{1}=handles.output;21functionpopupmenu1_Callback(hObject,eventdata,handles)val=get(hObject,'Value');str=get(hObject,'String');switchstr{val};case'peaks'handles.current_data=handles.peaks;case'membrane'handles.current_data=handles.membrane;case'sinc'handles.current_data=handles.sinc;end22guidata(hObject,handles)functionpopupmenu1_CreateFcn(hObject,eventdata,handles)ifispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end23functionsurf_Callback(hObject,eventdata,handles)surf(handles.current_data);24functionmesh_Callback(hObject,eventdata,handles)mesh(handles.current_data);25functioncontour_Callback(hObject,eventdata,handles)contour(handles.current_data);268.1.3回调函数回调函数是与GUI控件或GUI图框相关的函数,可以用来控制GUI及其控件对用户事件的响应行为,例如用户单击鼠标、移动鼠标、选取菜单时的响应等。GUI图框与GUI控件根据种类的不同,会带有不同的回调函数,每种回调函数都有响应的触发机制。表8-1中为定义了触发机制的回调函数属性。27回调属性触发事件回调属性触发事件ButtonDownFcn按下鼠标offCallback关闭切换按钮Callback控制动作OnCallback改变切换按钮CellEditCallback编辑表格单元ResizeFcn重置大小CellSelectionCallback单击表格单元SelectionChangeFcn改变单选按钮ClickedCallback控制动作WindowButtonDownFcn窗口按下鼠标28回调属性触发事件回调属性触发事件CloseRequestFcn关闭窗口WindowButtonMotionFcn窗口移动鼠标CreateFcn控件初始化WindowButtonUpFcn松开鼠标DeleteFcn销毁控件WindowKeyPressFcn单击鼠标KeyPressFcn按下键盘键WindowKeyReleaseFcn释放鼠标KeyReleaseFcn松开键盘键WindowScrollWheelFcn滚轮滚动298.2GUI控件8.2.1GUI控件类型GUI控件见图8-4。现用表8-2对它们作进一步说明。30控件对象功能说明PushButtion按钮Slider滑动框RadioButton单选按钮CheckBox复选按钮EditText文本编辑框StaticText静态文本Pop-upMenu弹出式菜单Listbox列表框ToggleButton开关按钮:创建切换Table创建表格控件Axes坐标系对象,显示图形图像Panel面板ButtonGroup按钮组ActiveXControlActiveX控件,在GUI中显示控件318.2.2创建GUI控件1.GUI方式前面的例8-1已经介绍,不再赘述。2.命令方式通过uicontrol函数可以创建控件对象,该函数的调用格式如下:32Handle=uicontrol(‘Name’,Value,…)Handle=uicontrol(parent,’Name’,Value,…)Handle=uicontrol其中,handle是创建的控件对象的句柄值,parent是控件所在的上层图形对象的句柄值,Name是控件的属性名,Value是与属性名相对应的属性值。33例8-2使用uicontrol命令建立GUI控件对象。在命令窗口中输入:figurehax=axes('Units','pixels');surf(peaks)uicontrol('Style','popup','String','jet|hsv|hot|cool|gray',...'Position',[2034010050],'Callback',@setmap)34得到的结果如图8-8所示。该图有一个弹出式菜单图8-8添加弹出式菜单的GUI35在命令窗口中继续输入:uicontrol('Style','pushbutton','String','Clear',...'Position',[20205020],'Callback','cla')得到的结果如图8-9所示。该图有一个clear按钮36图8-9添加弹出式菜单和按钮的GUI37在命令窗口中继续输入:uicontrol('Style','slider','Min',1,'Max',50,'Value',41,...'Position',[4002012020],'Callback',{@surfzlim,hax})得到的结果如图8-10所示。该图有一个滑动条。38图8-10添加弹出式菜单和按钮、滑动条的GUI39在命令窗口中继续输入:uicontrol('Style','text','Position',[4004512020],...'String','VerticalExaggeration')得到的结果如图8-11所示。该图有一个文本框。40图8-11添加弹出式菜单和按钮、滑动条、文本框的GUI418.3GUI菜单和工具栏8.3.1GUI菜单1.菜单和菜单项菜单和菜单项的建立函数为uimenu,格式如下:Handle=uimenu(‘ProperTypeName’,PropertyValue,…)Handle=uimenu(parent,‘ProperTypeName’,PropertyValue,…)其中,ProperTypeName和PropertyValue的设置方式可以参考表8-3。42属性名ProperTypeName属性值PropertyValue说明CheckedOn,off菜单项前是否添加复选框LabelString菜单标题名称SeparatorOn,off分隔符ForegroundcolorColorSpec文本颜色VisibleOn,off菜单可见状态Acceleratorcharacter键盘快捷键ChildrenVectorofhandles子菜单句柄EnableCancel,queueDefault:queue分隔条Parenthandle父对象TagString对象标识符43属性名ProperTypeName属性值PropertyValue说明TypeString
本文标题:matlab GUI 编程
链接地址:https://www.777doc.com/doc-3383623 .html