GUI入门教程.docx
- 文档编号:26927706
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:40
- 大小:915.90KB
GUI入门教程.docx
《GUI入门教程.docx》由会员分享,可在线阅读,更多相关《GUI入门教程.docx(40页珍藏版)》请在冰豆网上搜索。
GUI入门教程
GUI入门教程(总38页)
学习本教程的目的:
学会用matlabgui设计用户界面,并编写响应程序。
一、GUI基础知识
图形用户界面(GraphicalUserInterfaces,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
Matlab中设计图形用户界面的方法有两种:
使用可视化的界面环境和通过编写程序。
本教程主要通过使用可视化的界面环境来实现GUI界面的设计
启动matlab的GUI界面
在matlab主界面的菜单栏File中New下的GUI,如图1所示
图1
单击GUI后会出现如图2界面
图2
Matlab为GUI设计一共准备了4种模板,分别是:
BlankGUI(Default)(空白模板,默认);
GUIwithUicontrols(带控件对象的GUI模板);
GUIwithAxesandMenu(带坐标轴与菜单的GUI模板);
ModalQuestionDialog(带模式问题对话框的GUI模板)。
我们入门时经常会使用第一个模板,即BlankGUI(空白模板)。
单击图2中的ok会出现下图界面(图3)
图3
图形用户界面GUI设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等4个功能区组成。
菜单栏:
GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help6个菜单项,使用其中的命令可以完成图形用户界面的设计操作。
工具栏:
编辑工具在菜单栏的下方,提供了“编程”时常用的工具,例如可以进行保存、撤销、运行等等操作。
控件工具栏:
各个模块位于窗口的左半部分,提供了设计GUI过程中所用的用户控件;了解各个模块(用户控件)的用途和作用对GUI的设计起到比较大的作用。
图形对象设计区:
该区域是网格形式的用户设计GUI的空白区域,可以把用户控件做到区域里。
对matlab菜单栏中部分内容的解释
◆布局编辑器(LayoutEdtor)——在图形窗口中创建及布置图形对象。
布局编辑器是可以启动用户界面的控制面板,LayoutEdtor用于从控件选择板上选择控件对象并放置到布局区去,布局区被激活后就成为图形窗口。
◆菜单编辑器(MenuEditor)——创建、设计、修改下拉式菜单和快捷菜单;
◆对象浏览器(ObjectBrowser)——用于获得当前Matlab图形用户界面程序中的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器;
◆属性查看器(PropertyInspector)—查询并设置属性值;同图4
◆Tab顺序编辑器(TabOrderEditor)——用于设置当用户按下键盘上的Tab键时,对象被选中的先后顺序。
◆M-文件编辑器(M-fileEditor)—用于编辑控件对象的回应函数,在该m-文件中编程,既可把各个控件对象联系在一起,来实现想要实现的功能。
控件工具
按钮(PushButtons):
执行某种预定的功能或操作
(左二)
单选框(RadioButton):
单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;
(左三)
文本编辑器(EditableTexts):
用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作;
(左四)
弹出式菜单(PopupMenus):
让用户从一列菜单项中选择一项作为参数输入;
(左五)
开关按钮(ToggleButton):
产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback中的内容;
(左六)
坐标轴(Axes):
用于显示图形和图象。
(左七)
滚动条(Slider):
可输入指定范围的数量值
(右一)
复选框(CheckBoxes):
单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;
(右二)
静态文本框(StaticTexts):
仅用于显示单行的说明文字
(右三)
列表框(ListBoxes):
在其中定义一系列可供选择的字符串;
(右四)
控件对象的公共属性
双击模块(控件对象)就会进入一个属性设置与修改的区域,如下图(图4)所示,通过修改一些参数,就可以改变模块的外在形式。
图4
控件对象公共属性:
◆Children取值为空矩阵,因为控件对象没有自己的子对象;
◆Parent取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口;
◆Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;
◆Type取值为uicontrol,表明图形对象的类型;
◆UserDate取值为空矩阵,用于保存与该控件对象相关的重要数据和信息;
◆Visible取值为on或off。
◆BackgroundColor取值为颜色的预定义字符或RGB数值;缺省值为浅灰色;
◆Callback取值为字符串,可以是某个M文件名或一小段Matlab语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序;
◆Enable取值为on(缺省值),inactive和off;
◆Extend取值为四元素矢量[0,0,width,height],记录控件对象标题字符的位置和尺寸;
◆ForegroundColor取值为颜色的预定义字符或RGB数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;
◆Max,Min取值都为数值,缺省值分别为1和0;
◆String取值为字符串矩阵或块数组,定义控件对象标题或选项内容;
◆Style取值可以是pushbutton(缺省值),radiobutton,checkbox,edit,text,slider,frame,popupmenu或listbox;
◆Units取值可以是pixels(缺省值),normalized(相对单位),inches,centimeters(厘米)或points(磅);
◆Value取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型。
◆FontAngle取值为normal(正体,缺省值),italic(斜体),oblique(方头);
◆FontName取值为控件标题等字体的字库名;
◆FontSize取值为数值;
◆FontUnits取值为points(缺省值),normalized,inches,centimeters或pixels;
◆FontWeight取值为normal(缺省值),light,demi和bold,定义字符的粗细;
◆HorizontalAligment取值为left,center(缺省值)或right,定义控件对象标题等的对齐方式。
◆ListboxTop取值为数量值,用于listbox控件对象;
◆SliderStep取值为两元素矢量[minstep,maxstep],用于slider控件对象;
◆Selected取值为on或off(缺省值);
◆SlectionHoghlight取值为on或off(缺省值)。
◆BusyAction取值为cancel或queue(缺省值);
◆ButtDownFun取值为字符串,一般为某个M文件名或一小段Matlab程序;
◆Creatfun取值为字符串,一般为某个M文件名或一小段Matlab程序;
◆DeletFun取值为字符串,一般为某个M文件名或一小段Matlab程序;
◆HandleVisibility取值为on(缺省值),callback或off;
◆Interruptible取值为on或off(缺省值)。
设计时用到某个参数,到这里查找即可
讲到这里,问大家一个问题:
为什么要在matlab中创建GUI用户界面?
这是一个很好的问题,简单的回答是可能并不需要.使用MATLAB来分析数据,求解问题,绘制结果的绝大多数的人,并不会发现GUI工具很有用。
但是,GUI可以在MATLAB中生成非常有效的工具和应用程序,或是建立演示工作的交互式界面。
生成用户图形界面的最常见的理由:
•编写一个需多次反复使用的实用函数,菜单、按钮、文本框作为输入方法具有意义;
•编写函数或开发应用程序供别人使用;
•创建一个过程、技术或分析方法的交互式示例;
•认为GUI的简洁,性能良好,并且想自己尝试一下。
•可以使不懂编程的人在可视化窗口界面下轻松地完成某个特定功能。
图形用户界面的设计原则和一般步骤
1设计原则
由于要求不同,设计出来的界面也千差万别。
但是,自从人们开始设计图形界面以后,界面设计的评判标准却没有太大的变化。
简单说来,一个好的界面应遵循以下三个原则:
简单性(Simplicity)、一致性(Consistency)及习常性(Familiarity)。
(1)简单性
设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。
那些可有可无的功能,应尽量删去,以保持界面的整洁。
设计的图形界面要直观,为此应多采用图形,而间量避免数值。
设计界面应间量减少窗口数目,力避在不同窗口之间进行来回切换。
(2)一致性
所谓一致性有两层含义:
一是读者自己开发的界面风格要尽量一致;二是新设计的界面要与其他已有的界面的风格不要截然向左。
这是因为用户在初次使用新界面时,总习惯于凭借经验进行试探。
比如说,图形显示区常安排在界面的左半边,而按键等控制区被排在右侧。
(3)习常性
设计界面时,应尽量使用人们所熟悉的标志与符号。
用户可能并不了解新界面的具体含义及操作方法,但他完全可以根据熟悉标志作出正确猜测,自学入门。
(4)其他考虑因素
除了以上对界面的静态要求外,还应注意界面的动态性能。
如界面对用户操作的响应要迅速(Immediate)、连续(Continous);对持续时间较长的运算,要给出等待时间提示,并允许用户中断运算。
2一般制作步骤
界面制作包括界面设计和程序实现。
具体制作步骤如下:
(1)分析界面所要求实现的主要功能,明确设计任务;
(2)在稿纸上绘出界面草图,并站在使用者的角度来审查草图;
(3)按构思的草图,上机制作静态界面,并检查之;
(4)编写界面动态功能的程序,对功能进行逐项检查。
基础知识讲到这里,下面来看一下具体实例
、具体实例
(一)统计鼠标的单击次数
1、按照前面步骤,打开一个GUI空白界面。
2、在空白页放入pushputton和statictext,如下图所示。
3、双击pushbutton,进入pushputton属性设置界面
4、修改Backgroundcolor为浅蓝色,修改color为黄色,修改fontsize的大小为12,修改string为Click,修改Foregroundcolor为蓝色,修改之后如图所示:
5、同样双击staticText,进入其属性修改界面,修改fontsize的大小为12,修改Foregroundcolor为红色,修改后如图:
6、保存文件到桌面,文件名为c1;保存确定之后,会进入M-fileEditor界面,如图所示
该界面是GUI界面中pushputton和statictext的内在程序,在该M-fileEditor界面特定位置编程,即可把pushputton和statictext两个模块联系在一起,以实现所需功能。
7、在M-file编辑器界面,找到函数functionpushbutton1_Callback(hObject,eventdata,handles)
在这个函数名称下面写入如下程序段:
persistentc%定义局部静态变量,persistent变量在声明时没有赋值,将被初始化为空矩阵
ifisempty(c)%如果c矩阵是空矩阵
c=0%给c赋初值为0
end
c=c+1;%c等于c加1
str=sprintf('TotalClicks:
%d',c);%把TotalClicks:
c(c是一个变量)这句话保存到str中
set,'String',str);%把str中的内容以字符串的形式显示在text1中
如图所示:
7、保存程序后,在M-file编辑器中单击运行按钮,或者在GUI界面单击运行按钮,都会出现如下界面:
在单击Click按钮后,totalclicks中的次数会随之变化,下图是单击6次之后的界面:
(二)一个二维方阵的加法运算
1、新建一空白GUI界面
2、在界面上安装8个编辑文本框、4个静态文本框与2个pushputton,如图所示:
3、可以双击每个模块并设置其属性值,修改fontsize的大小为12,pushbutton1中的string修改为“+”,pushbutton1中的string修改为“=”,并且设置8个编辑文本框、4个静态文本框的string为空,设置4个静态文本框的颜色为红色,设置完之后如图
4、保存至桌面,文件名为c2,保存之后跳到m文件编辑界面,如图:
5添加程序。
在functionpushbutton2_Callback(hObject,eventdata,handles)下编写如下程序:
s1=str2double(get,'String'));%把edit1里面的字符赋给s1
s2=str2double(get,'String'));%把edit5里面的字符赋给s2
set,'String',s1+s2);%s1和s2求和,并以字符串的形式保存到text1中
s3=str2double(get,'String'));%把edit2里面的字符赋给s3
s4=str2double(get,'String'));%把edit6里面的字符赋给s4
set,'String',s3+s4);%s3和s4求和,并以字符串的形式保存到text2中
s5=str2double(get,'String'));
s6=str2double(get,'String'));
set,'String',s5+s6);
s7=str2double(get,'String'));
s8=str2double(get,'String'));
set,'String',s7+s8);
%后面两个程序与前两个类似,这里不再多加解释;edit1-8为八个文本编辑器的string名,test1-4为四个静态文本框的string名,在各自模块的公共属性(双击模块进入)中修改,由此可见模块的属性和程序是一一对应的关系
6、在m编辑器界面运行,或在GUI界面运行则会出现如图界面:
7、在方框中随便填入矩阵,例如[11;22]和[12;34],点一下等于将会得到两个二维矩阵的和。
如图所示:
(三)简易计算器的设计
1、新建一个GUI空白界面,如图:
2、放置一个简易计算器所需要的模块(1个StaticText和20个PushBotton),statictext用来显示数和结果,20个PushBotton分别为0~9、加减乘除点等于、平方、返回、清空、退出。
放置模块并调整大小后如图所示:
注意,pushbutton这20个按钮最好按顺序,从左到右,从上到下,以免顺序错乱后,对后面编程起到坏的影响
3、属性设置
双击Statictext进入属性设置界面,修改Backgroundcolor为淡蓝色,Fontsize为15,string为空白,如图所示
分别双击20个PushButton进入按钮属性设置,分别修改Backgroundcolor为红色,Fontsize为15,ForegroundColor为黄色,string分别为0~9、+、-、*、/、.、=、X^2、返回、清空、退出等,修改完如图所示:
4、保存文件,文件名c3;保存确认后进入m文件编辑器,如图:
5、在m文件编辑器里面编写程序
0~9数字键的编写
0~9这十个数字分别对应string里的button1-button10
在functionpushbutton1_Callback(hObject,eventdata,handles)下编写:
textString=get,'String');%把text1中的字符串赋给textstring变量
textString=strcat(textString,'0');%把textstring中的字符与0连接起来并赋给textstring本身
set,'String',textString)%把新的textstring中的内容以字符串的形式显示在text1中
同理,分别在functionpushbutton2-10_Callback(hObject,eventdata,handles)下给1-9数字按键下以相同的方法编写类似程序
符号键的编写
在functionpushbutton11_Callback(hObject,eventdata,handles)下编写:
textString=get,'String');%把text1中的字符串赋给textstring变量
textString=strcat(textString,'+');%把textstring中的字符与+连接起来并赋给textstring本身
set,'String',textString)%把新的textstring中的内容以字符串的形式显示在text1中
同理,分别在functionpushbutton12-15_Callback(hObject,eventdata,handles)和functionpushbutton17_Callback(hObject,eventdata,handles)下给符号键‘-’、‘*’、‘/’、‘.’、‘X^2’赋值类似语句
“=”的编程:
(=对应pushbutton16)
在functionpushbutton16_Callback(hObject,eventdata,handles)下编写:
textString=get,'String');%把text1中的字符串赋给textstring变量
ans=eval(textString);%将textString的内容转换成数值表达式
set,'String',ans)%把新的ans中的内容以字符串的形式显示在text1中
按键“返回”的编程:
即删除一个空字符:
在functionpushbutton18_Callback(hObject,eventdata,handles)下编写:
textString=get,'String')%把text1中的字符串赋给textstring变量
w=length(textString)%w为textstring的长度
t=char(textString)
textString=t(1:
w-1)%把t中前w-1个数赋给textstring
set,'String',textString)
清除键的程序
在functionpushbutton19_Callback(hObject,eventdata,handles)下编写:
set,'String','')%把text清空
返回键的程序
在functionpushbutton20_Callback(hObject,eventdata,handles)下编写:
close(gcf);%关闭句柄值,即关闭界面
6、保存m文件后运行,运行结果如下图:
8、在计算器界面作如下计算:
输出结果为(单击=):
M文件源程序:
functionvarargout=c3(varargin)
%C3M-filefor
%C3,byitself,createsanewC3orraisestheexisting
%singleton*.
%
%H=C3returnsthehandletoanewC3orthehandleto
%theexistingsingleton*.
%
%C3('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinwiththegiveninputarguments.
%
%C3('Property','Value',...)createsanewC3orraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforec3_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtoc3_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpc3
%LastModifiedbyGUIDE02-Jan-201317:
13:
36
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@c3_OpeningFcn,...
'gui_OutputFcn',@c3_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GUI 入门教程
![提示](https://static.bdocx.com/images/bang_tan.gif)