基于MATLAB的可视化GUI界面设计
GUI界面的打开:
1:打开MATLAB
2:在命令行输入
>>guide
3:选择你所需要创建的GUI,一般为默认
4:通过添加你所需要实现的功能
5:双击2中的功能块,修改该功能(如按钮,编辑框等)的属性,如String,Tag,Value,ForegroudColor,BackgroudColor等、编辑完成,记得回车(Enter),否则可能会导致修改不成功,Tag值唯一标识,可通过Tag值访问句柄值。
6:点击保存后会生成一个.Fig文件,一个.m文件。.Fig文件用于对GUI界面的修改,.m文件用于功能的实现以及功能块之间的交互和相互调用等。
7:若是不小心将编辑的.Fig文件关闭了,直接打开运行会报错
正确的做法:在命令行输入:guide后,在弹出的对话框中选择“打开现有的GUI”,选择你所需要的.Fig即可
.m文件中,函数交互的详细逻辑:
.m文件创建的对象和GUIDE创建的对象之间的相互访问的问题:
自定义:
-----------------------------------美腻的分割线----------------------------------------------------
**实例1:**实现sinx cosx tanx 的画图功能和Clear功能
一:GUI的创建和属性的设置
Axes对象的Tag为:
sin按钮对象的String 和 Tag值为:
cos按钮对象的String和Tag值为:
tan按钮对象的String和Tag值为:
Clear的String和Tag值为:
字体颜色和背景颜色可以找到ForegroudColor,BackgroudColor设置,其他属性同上…
二:函数的写入
OpeingFcn函数对应OutouputFcn ,全局变量可在OpeingFcn函数中定义
注意:主函数不要动!否则可能会导致GUI打开失败,无法进行函数写入等处理。
1:由于后面可能会一直用到x(sinx cosx tanx),所以先在OpengFcn中定义x:
最后的guidata…是用来更新handles结构体的
2:写入Clear的回调函数(右键Clear按钮,选择View Callbacks(或者:查看回调) ,点击Callback转到该按钮的功能函数编写区)
用try保留字
:allchild为所有的子对象,plotarea为之前设置的Axes的Tag值。
该句的作用:保证在初始化界面中,没有图形的时候,执行Clear操作不会显示错误
3:对sinx进行功能写入
通过handles.x可以访问自变量,handles.Tag可以访问Axes
运行可以得到:
cosx tanx等,同理:
如果进行sinx的绘图之后,再点击cosx等的绘图会替代上一次的绘图。若需要将每一次绘的图进行同时显示,可以在Axes的属性中,找到NextPlot,将属性改为add。
对tanx进行范围约束;
运行可得:
可以将sinx cosx tanx进行颜色的修改,如:
plot(handles.plotarea,x,y,’r’)
-----------------------------------美腻的分割线----------------------------------------------------
实例2:
实现点击button1中的按钮,随机生成一个数据,通过自定义的按钮使得其在Edit中显现。
handles.rand=rand
%获取rand随机数的句柄值,将该句柄值赋值到handles的某个字段中
%可通过handles.rand中的字段访问GUI数据。
修改:
↑:将生成的随机数通过点击push按键,num2str型到Edit编辑框中。
-----------------------------------美腻的分割线----------------------------------------------------
打开一个GUI已有的按钮Push Button (Tag=pushbutton1),编写Callback函数,与自定义的按键联系起来。
(GUI中的按键)-在该回调函数中,为自定义的按钮写一个“String”值。可以通过handles.push(为自定义按钮的Tag)访问,达到一致访问的目的(通过handles结构体访问)。
若想对自定义的按钮加入回调函数,可以通过Callback属性设置
(基于其余的Callback函数属性的设置)
例:
都是Tag_Callback,后面三个输入参数为:hObject ,eventdata,handles
hObject 为当前的对象,比如说在OpengFcn中,hObject 为当前的Figure,在该按钮的Callback函数中,hObject为当前的按钮的句柄值。
eventdata为保留的属性,一般为空。
为保持回调函数的一致性
然后自己写出回调函数
在该回调函数中,设置刚才GUI中拖拉的String,即:
会报错
解决方法:去了另外两个参数,只有handles是所需回调参数
单击1,2变Run,单击2,3变Run
总结:
=OVER=========