《清华大学MatlabGUI设计》由会员分享,可在线阅读,更多相关《清华大学MatlabGUI设计(34页珍藏版)》请在金锄头文库上搜索。
1、LOGOMatlab GUI LOGOContentsGUI编程概述1GUIDE开发工具2GUIDE开发经验3纯代码生成GUI4LOGO1.GUI编程概述vMatlab是一套高性能的数值计算和可视化软件,兼有高效科学计算和友好图形界面两方面优势。v其图形用户界面(Graphical User Interfaces, GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。LOGO1.GUI编程概述vMatlab GUI具有以下三个基本元素。p组件(Component)图形化控件(按钮、编辑框、列表、滚动条等),由uicontrol创建;静态元素(窗口和文本字符串
2、);菜单,由uimenu和uicontextmenu创建;坐标系,由axes创建;p图形窗口(Figure)p回应(Callback)LOGO1.GUI编程概述vMatlab GUI具有以下三个基本元素。p组件p图形窗口GUI的每一个组件都必须放在图形窗口中。Figure函数可以用来创建空图像窗口。p回应或称回调函数,指当用户单击或者键盘输入一些信息后,程序在后台给予的响应,如执行相应的函数。LOGO1.GUI编程概述vMatlab GUI的开发步骤。pGUI组件布局pGUI组件编程p保存并发布GUIvMatlab GUI的实现方法。pGUIDE开发工具优点:方便,易上手,适合新手缺点:代码框
3、架较复杂,须多个文件储存pM文件纯代码优点:代码纯净、清晰,只需M文件储存,手段专业缺点:代码量大且繁琐,不适合新手LOGO2.GUIDE开发工具vMatlab的GUIDE是一个组件布局工具集。该工具在布局GUI同时会生成两个文件:pFIG文件。该文件包括GUI的图像窗口和所有子对象的完全描述及属性值。pM文件。该文件包括用户用来发布和控制界面的各种函数和回调函数(作为子函数)。该文件不包含任何组件的布置信息。LOGO2.GUIDE开发工具v利用GUIDE创建GUIp在Matlab命令窗中输入“guide”得到以下对话框p当要打开已存在的文件“mygui.fig”,则输入“guide mygu
4、i.fig”即可选择默认的空白界面来生成GUILOGO2.GUIDE开发工具v利用GUIDE创建GUIp得到的空白GUI开发界面如下GUI窗口界面组件布局编辑器组件排列工具菜单编辑器属性编辑器运行效果查看M文件LOGO2.GUIDE开发工具v在布置组件前,对GUI进行组态。“Tools GUI Options”,得到以下对话框。用户可以对所开发的GUI进行基本属性设定。LOGO2.GUIDE开发工具v设计组件布局pMatlab共有14种基本控件(可能不同版本会稍有不同)。按钮(Push Button)是最常用的,用来响应鼠标单击事件;滑动条(Slider)主要用来为程序提供数值,该数值被限制在
5、min, max之间,用户通过滑动滑块来制定;单选按钮(Radio Button)经常多个联合使用(借助按钮组),用于实现同一属性在不同取值间切换,用户只能选一个;复选框(Check Box)和单选按钮类似,但提供用户多选;LOGO2.GUIDE开发工具v设计组件布局pMatlab基本控件2。文本框(Edit Text)支持用户通过键盘输入;文本标签(Static Text)用以显示固定字符串;下拉菜单(Pop-Up Menu)类似于一组单选框;下拉列表(List Box)类似于一组复选框;双位按钮(Toggle Button)类似于按钮,但它保持“按下”或“抬起”两个状态,并根据输入在两者间
6、切换;坐标轴(Axes)用来显示图形;表格(Table)用来显示表格;LOGO2.GUIDE开发工具v设计组件布局pMatlab基本控件3。面板(Panel)和按钮组(Button Group)用以把相关联的组件放在一起,使界面具有层次性和易用性;ActiveX控件主要用于Matlab和其他应用程序的交互。LOGO2.GUIDE开发工具v设计组件布局pGUIDE组件常用属性1控件风格和外观BackgroundColor:设置控件背景颜色,使用R G B或颜色定义CData:在控件上显示的真彩色图像,使用矩阵表示ForegroundColor:文本颜色String属性:控件上的文本,以及列表框和
7、弹出菜单的选项Visible:控件是否可见LOGO2.GUIDE开发工具v设计组件布局pGUIDE组件常用属性2对象的常规信息Enable属性: 表示此控件的使能状态,设置为on”,表示可选,为“off”时则表示不可选Style:控件对象类型Tag:控件表示(用户定义)TooltipString属性:提示信息显示。当鼠标指针位于此控件上时,显示提示信息UserData:用户指定数据Position:控件对象的尺寸和位置Units:设置控件的位置及大小的单位有关字体的属性,如 FontAngle, FontName等LOGO2.GUIDE开发工具v设计组件布局pGUIDE组件常用属性3控件回调函
8、数的执行BusyAction:处理回调函数的中断。有两种选项:即Cancel:取消中断事件,queue:排队(默认设置)ButtonDownFcn属性:按钮按下时的处理函数CallBack属性:是连接程序界面整个程序系统的实质性功能的纽带。该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值CreateFcn:在对象产生过程中执行的回调函数DeleteFcn:删除对象过程中执行的回调函数Interruptible属性:指定当前的回调函数在执行时是否允许中断,去执行其他的函数LOGO2.GUIDE开发工具v设计组件布局pGUIDE组件常用属性4控件当前状态
9、信息ListboxTop:在列表框中显示的最顶层的字符串的索引Max:最大值Min:最小值Value:控件的当前值p不同组件对于以上基本属性可能各有一些特殊的对应,用户应根据实际需要配置相应的属性。LOGO2.GUIDE开发工具课堂演示:GUIDE组件布局LOGO2.GUIDE开发工具vM文件编写p当用户第一次储存当前的GUI时,GUIDE会自动为用户生成相应的FIG文件和M文件。p用户在M文件中需要完成以下工作:程序初始化设置实现控件回调函数p最关键以及最难的两点:程序流程控制数据结构维护LOGO2.GUIDE开发工具vM文件编写pGUI程序的初始化实际上就是数据的初始化。一般可以在函数“X
10、_OpeningFcn”中进行。该函数在打开GUI的时候调用。p回调函数则是在用户增加控件的同时自动地在M文件中生成。用户可以通过控件右键菜单中的“callback”选项找到相应的回调函数,并将其实现。LOGO2.GUIDE开发工具v全局变量的运用p对于GUI程序,全局变量必不可少。一般有两种全局变量的储存方法。句柄储存。该方法利用全局的句柄结构(handles),在其中添加变量,所有回调函数都接受这个句柄结构参数。 如函数: function Play_Callback(hObject, eventdata, handles)Global变量。该方法是Matlab程序中通用的。LOGO2.G
11、UIDE开发工具v全局变量的运用p句柄储存全局变量。定义或者修改一个全局变量(如“variable”)时,可直接使用如下代码:handles.variable = 0;每个函数中一旦更改了handles中的任何一个值,最后均需要用以下代码来进行保存,使数据更改真正起作用:guidata(hObject,handles);访问handles中的全局变量,则可以直接访问。LOGO2.GUIDE开发工具v全局变量的运用pGlobal储存全局变量。仅一条规则:在任何地方使用,在使用之前,先用global进行“声明”。如,定义全局变量:global g_varg_var = 100;在别的函数里要将g_
12、var值赋给局部变量l_var则:global g_varl_var = g_var;LOGO2.GUIDE开发工具v后台与GUI的交流pGet函数。通过句柄获取控件当前的值。a = get(H,DefaultObjectTypePropertyName) ;pSet函数。通过句柄设置控件的值。set(H,PropertyName,PropertyValue,.) ;pAxes函数。通过句柄来获取当前绘图区。axes(H);plot();LOGO3.GUIDE开发经验vGUI设计原则p简单性界面设计力求简洁、清晰、直观、易用;p一致性界面风格统一一致,养成好习惯;p习常性尽量使用人们熟悉的标志
13、和符号;p其他因素注意界面的动态性能。如响应要迅速、连续,长时间计算最好给出进度条并允许中断。此外,还需要有抵抗“野蛮操作”的鲁棒性。LOGO3.GUIDE开发经验vGUI设计步骤p分析界面所要求实现的主要功能,明确任务p设计草图,考虑设计原则,并予以实现p编写对象的相应程序,检查功能完成情况设计时可以参考很多优秀的专业软件。对于多媒体应用来说,很多视频、音频、图像处理软件都可以学习!当然,作为一个专业的程序员,在设计时还必须要加入自己的风格,并保持自己的风格!LOGO3.GUIDE开发经验vGUI设计实例p多媒体大作业“音频处理软件” (王易之 & MQ)个性化的设计风格,色彩浓艳夸张。控件
14、均放在表面,使用方便,但显得比较低级。软件使用的鲁棒性还是比较好的。LOGO3.GUIDE开发经验vGUI设计实例p系统工程大作业 (王易之 & WDM & JC)设计风格简朴清晰,灵感取自Matlab界面。实现功能均放在菜单中。但Command窗口也可以用命令调用。这样的设置显得比前一个专业一些。如图为主成分分析结果。LOGO4.纯代码生成GUIv利用纯代码生成GUI是Matlab GUI最本源的设计方法,类似于在C或C+中用Windows API来设计界面。它具有以下特点。p代码的纯粹性:所有代码都由用户编写,便于管理和分离(多文件)。整个软件就是一堆M文件。p绝对可控性。开发者掌握了所有
15、的权利,可以在开发中更自由地发挥,对于专业程序员,这点很有吸引力。对于有一定基础或者习惯这种编程方式的同学,可以使用这种开发方式。LOGO4.纯代码生成GUIv程序实例分析。p“从MySQL数据库生成NS2仿真数据” (王易之)LOGO4.纯代码生成GUIv程序实例分析。p生成窗口 p添加菜单H_fig = figure(1);set(H_fig,unit,normalized,Position,0.1,0.1,0.8,0.8,MenuBar,none,name,Build_NS2_Files,Color,0.8,0.8,0.8);h_menu_file = uimenu(H_fig,labe
16、l,File);h_menu_edit = uimenu(H_fig,label,Edit);h_menu_help = uimenu(H_fig,label,Help); h_submenu_file_exit = uimenu(h_menu_file,label,exit,callback,close();LOGO4.纯代码生成GUIv程序实例分析。p调整单位 p添加控件set(H_fig,defaultuicontrolunits,normalized);h_panel_build = uipanel(position,0.35,0.02,0.6,0.2,backgroundColor,
17、0.8,0.8,0.8);h_push_mixtables = uicontrol(H_fig,style,push,position,0.4,0.05,0.225,0.12,string,Mix tables.,fontsize,20,BackgroundColor,g,. callback,mixtables(h_list_addlinks,h_text_system););h_edit_username = uicontrol(H_fig,style,edit,position,0.05,0.84,0.25,0.05,string,Mysql_username,BackgroundColor,0.9,0.9,0.9,fontsize,15,. callback,Mysql_username = get(h_edit_username,string););LOGO4.纯代码生成GUIv纯代码生成GUI基本流程总结p初始化全局变量p生成窗口并设置属性p生成控件并设置属性p部分控件属性中需要相应的回调函数p用子函数或者在其他文件里实现相应的回调函数LOGOMatlab GUI设计v可以参考精通MATLAB GUI设计,Matlab宝典等书;vMATLAB内部的HELP命令始终是最强大的,应作为大家释疑的首选;有时候也是非常好用的;v一些Matlab论坛也可以参考。