十一、图形界面(GUI)程序设计
matlab也能做应用程序,类似于c++的mfc,这点我也是才知道,大吃一惊,原来现在可视化编程应用如此广泛,连matlab都可以,接下来我就会讲解如何通过matlab进行程序设计
首先,我们在matlab的command window,也就是命令行窗口,输入guide->回车->点击“确定”
图11-1 guide
打开以后是如下图所示的界面,左边有两列”控件“,为了更直观的展示这些控件,我们点击”文件“->”预设”,我们把”在组建选项板中显示名称“前面的勾打上
图11-2 预设
图11-3 预设完成
这样,控件的名称就显示出来了
接下来我们随便拉几个控件到界面中,然后点击上面类似于”播放“的一个绿色按钮
图11-4 运行
这个时候我们的应用程序就出来了
图11-5 第一个应用程序
现在我们知道了如何运行应用程序以后,我们要先优化我们的界面,首先界面的一些控件排列并不是很整齐,我们可以在把这三个控件选择了以后,点击“工具”->”对齐对象”,这时候就会弹出一个选择器,让你选择以什么样的方式进行对齐
图11-6 对齐对象
对齐控件了以后,我们再考虑一个问题,按钮都有它各自的作用,所以我们要让他展现不同的名字,以直观的让人知道这个按钮是干什么的,所以我们需要修改控件的样式,如何操作?双击控件即可,比方说我要把第一个按钮的名称改为,按钮1,我只需要双击控件,找到它对应的属性进行修改
图11-7 修改控件属性
这里我们还要多看一个属性,叫tag,如何辨别每个控件?通过控件的名字?不对,其实每个控件都有自己特殊的“辨识码”,也可以叫id,这个id是可以改的,就在“tag”属性这一行里,知道id有什么用?后面如果我们需要某个控件实现某个功能,我们需要去指定控件,通过什么来指定?就通过它的tag的id
图11-8 tag
上面讲的都是界面的一些知识,下面我们要讲的就是关于GUI程序背后代码撰写的部分,一个应用程序,除了有界面以外,还需要背后的代码才能实现交互
图11-9 GUI代码部分
现在我们找到OpeningFcn,在他的下面加上几行代码,执行一下看看
图11-10 Openingfcn
我一运行,立刻就有图出来了,这个原理其实是因为,我再OpeningFcn当中写的代码,他会在应用程序被打开时立刻执行,而我这个代码的作用就是在axes中画一个图像
接下来我们想想怎么给这个按钮1添加一些消息响应的代码,当我点击这个按钮1的时候就执行一些东西,我们不妨把刚才的代码剪切下来,复制到pushbutton1_Callback这个函数里面
图11-11 pushbutton1_Callback
接下来运行程序,我们预期的效果是,一开始程序打开什么都没有,当我点击按钮1的时候,突然有图出来了
图11-12 打开程序
确实一开始什么都没有,下面我们摁一下按钮1
图11-13 执行按钮1
接下来我们做个试验,如果我有两个axes,当我点击按钮1的时候,这个图会画在哪个图上呢?
图11-14 两个axes
那么问题来了,应该怎么做?下面给出解决办法
图11-15 选择确定的axes
其实就加了个代码,将surf要画的图的”tag“确定下来即可
下面我们做个小例子,这个例子的功能是,当我滑动滑动条的时候,静态文本显示的值会随着我的滑动而改变
首先是界面设计,我们先把这两个控件拖出来,调整位置和大小
图11-16 界面设计
然后我们需要修改滑动条的一些参数,最小值和最大值,因为它默认的值并不好
图11-17 滑动条参数
然后我们稍微把静态文本的字体调大一点,顺便记住他的tag,后面要用到的
图11-18 静态文本参数
界面设计就到这了,接下来我们需要写消息相应代码,代码的工作主要是,当我滑动滑动条的时候,有一个参数将我当前滑动条的值保存下来,然后传给静态文本,主要思路就是这样,所以我们的代码应该是在滑动条的函数里面写
这里我们可以去代码里找与slide关键词有关的函数,也可以直接鼠标右键滑动条->查看回调->callback,写上代码
图11-19 slider代码
然后运行下程序看看
图11-20 运行程序
讲到这里,基本上GUI入门算是快要结束了,我们再说最后一个问题,就是关于如何将我做出来的GUI程序,变成一个exe应用程序供其他计算机使用,这个其实才是主要问题,因为我们能使用是因为我们有matlab,能自动帮我们编译运行,但是别人要是想直接使用,我们就必须要做成exe文件,其实步骤也很简单,首先我们在命令行窗口输入“deploytool”,然后回车
图11-21 deploytool
选择第一个,之后他会弹出一个界面,让你设定一些东西,你也可以不设定,直接把我们的文件导入进来
图11-22 导入文件1
图11-23 导入文件2
图11-24 package
图11-25 打包
稍等一会儿,等待打包完成
图11-26 testing
图11-27 exe文件