一文学会MATLAB GUI设计,多个实例进行超详细的讲解,有代码逻辑和注释

772 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

基于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=======================================