差不多有一个月的时间没有写一些总结了,所以今天打算聊聊之前写的几篇文章。
8月可以说是我的GUI月,因为发的4篇文章,全是关于GUI的。
这可能就是我写文章的一个陋习,写起GUI就是连着好几篇,写爬虫,写汽车也是如此。
在上周发了一篇关于GUI文件拖拽读取的文章之后,其实后台收到不少留言。
其中有一条留言是:
“要什么GUI啊,难道不该自动遍历指定路径寻找符合要求的文件么,GUI是程序员写给不会写代码的人用的玩意……”
如果不回应这条留言,那么今天我所聊的事,多少显得没有意义。相信不少刚关注这个公众号的朋友也会有类似的问题,为什么要写GUI。
我推荐一篇我在去年9月份写的文章,“我为什么写GUI”,有兴趣的朋友可以读一读。
文章链接: 我为什么写GUI
回到这篇文章的主题上来,如何学好MATLAB GUI,我将会用8月份的这4篇文章为例子,给大家介绍3种提升GUI能力的方法。
01
多研究其他软件
GUI入门其实是一件非常简单的事。
8月的GUI实战训练营,已经是我今年举办的第二次关于GUI的实战训练。
毫不夸张的说,所有参与实战训练的朋友,基本上不超过3天就能独立掌握用m脚本制作GUI工具。
但是,真正想要把GUI学好,并不是一件容易的事。
写GUI有点像学生时代写作文,如果你没有足够的阅读量,即使你每周坚持写上万把字,估计效果都很难令人满意。
GUI也同样如此
如果你没有研究过足够多的优秀软件,没有花心思思考其中的细节,没有幻想过这些细节在GUI中会是什么样子,最后也没有为了在GUI中复现功能而废寝忘食,很遗憾,你并没有体会到GUI的乐趣
GUI最迷人的地方在于,按钮可以是按钮,也可以不是按钮。
不同的控件组合在一起,通过各种callback,ButtonDownFcn,KeyPressFcn可以有无数种可能性。
比如我之前发布的一篇关于MATLAB如何通过拖拽文件进行数据读取
文章链接: 我被自己的这波操作蠢哭了……
文章写作手法是一回事,但是大家仔细代入到情景中去理解我的需求,你大概也就能明白,为什么我要写这样一个功能。
我有为此刻意去用过很多软件,很多网页,去尝试文件拖拽到界面,去搜索功能实现的原理。
还有一个对我来说非常重要的经历是,我在写HaoEngineering这款工具集时,其实我花了很多时间在研究有道词典上。
我就在琢磨有道词典的搜索栏,灰体的提示词,点击自动清空,回车触发搜索……这一系列很自然的使用习惯。
可是当我把这些功能和GUI联系起来时,我发现一点都不容易。
而最后终于废了九牛二虎之力写完这些功能,觉得自己面前的这款GUI才真正能称之为工具。
02
深入探索功能
平时经常用MATLAB处理Excel数据的朋友,我相信, xlsread和xlswrite这两个函数对你们来说非常熟悉。
而与此相关的帖子在网络上也到处都是。不过这两个函数只局限在数据文本的读写。
如果大家再稍有好奇心再希望偷懒一些,就会开始考虑MATLAB是否可以设置Excel中单元格字体颜色等等,这里就要考虑调用Excel.Application。
一年前,我为了实现快速生成Excel模板代码,于是写了HaoTemplate。
HaoTemplate最重要的一个功能是,根据现有的Excel模板,将它转换成模板代码。
既然MATLAB可以调用Excel.Application对字体颜色进行设置,那么MATLAB是否可以创建Chart图表?
于是上个月,我写了一个HaoPlot的功能,可以实现快速在MATLAB环境下生成Excel的图表进行再处理。
文章链接: MATLAB的plot,一点也不酷!
MATLAB与Excel交互这方面的例子,除了生成图表之外,还可以设置“格式条件”对数据进行一个更为高效的处理。
文章链接: 被一位大二学生啪啪打脸的经历
从整个过程来看,其实用MATLAB来处理Excel是一个再普通不过的需求,但是更重要的是,你有没有在基础的功能上再深入去探索。
当你花足够多的时间去研究MATLAB Excel交互这个问题,最后你会发现所有的需求都不再有难度,只需要通过录制宏再进行代码改写就能实现。
所以,再小一块知识点也能玩出花来,也可以掌握许多不一样的技巧。
时常保持好奇心与“惰性”,多深入探索拓展功能
03
知识的系统性
无论是之前写的关于自学的文章,还是平时一些朋友发私信问我如何入门,我基本上不太推荐工具书。
主要是因为工具书的内容太全面太系统了,如果只是想入门MATLAB的话,死啃工具书反而容易感觉枯燥而失去对编程的乐趣。
因此,我只会建议大家带着需求带着问题去网上查找解决问题的答案,尽快实现自己所需要的功能。
不过,“学好”和“入门”并不是一回事。
要学好MATLAB GUI,知识的系统性很重要。
虽然一招鲜在大部分时候都非常管用,但是偶尔碰到比较少见奇特的问题与需求时,如果你平时有系统地总结某一类问题与解决方案,往往这时候就不再需要花太多精力在这类问题上。
比如8月份我写的一篇关于MATLAB颜色设置的文章
文章链接: 与MATLAB颜色设置斗智斗勇的那些年
这篇文章总结了我从开始学MATLAB到目前碰到的所有与颜色设置有关的问题的经历。从最开始的通过缩写字母设置颜色,再到RGB数值设置颜色,再到目前通过自己开发的GUI选取颜色,同时还介绍了MATLAB自带的颜色选取器。
再比如8月份的另一篇文章关于文件选取的问题。
文章链接: 我被自己的这波操作蠢哭了……
就有朋友留言问我,是不是为了介绍文件拖拽选取的功能,而刻意杜撰了前面的两种情景。
其实,一直关注这个公众号的朋友应该清楚,我在写公众号关于高效这方面题材的时候,从来不靠杜撰来强行创造需求。
这些问题都是我在工作过程中实实在在遇到的问题,而且我相信有朋友会碰到同样的问题,所以这篇文章写的才有意义。
在这篇文章中,我介绍了三种不同的文件选取模式,分别通过输入路径,MATLAB自带的文件选取器,以及通过Java Swing实现的拖拽选取的功能。
再往远了说,我曾经还总结过,MATLAB在结束运算后如何通知你的几种方式
文章链接: 如何让MATLAB在完成计算后通知你
在这篇文章中我总结了如何用MATLAB实现声音,消息框,图片,邮件,微信等方式通知你。
![36dca249ef09323c3fc9f3db5c12eed7.gif](https://img-blog.csdnimg.cn/img_convert/36dca249ef09323c3fc9f3db5c12eed7.gif)
总的来说,对于MATLAB GUI的进阶学习,我给大家的建议是:
- 平时多花一些时间在研究其他软件或APP上,拓展一下想象力,实现功能Concept的积累
- 保持好奇心,对已掌握的技能进行深入探索,拓展功能的可能性
- 对曾经遇到的问题与解决方案进行系统的总结,今后解决的不再是一个问题,而是一类问题
以上就是今天关于如何学好MATLAB GUI的总结分享,希望这篇文章对大家的GUI学习有所帮助。
作者介绍|打浦桥程序员
汽车行业工程师
目前在德国从事系统工程
和你一起用MATLAB的角度看世界
![8bae6dfa87b4a9d0477fec2cb641f883.png](https://img-blog.csdnimg.cn/img_convert/8bae6dfa87b4a9d0477fec2cb641f883.png)