许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  对MATLAB App Designer的深度喜爱

对MATLAB App Designer的深度喜爱

阅读数 36
点赞 0
article_banner

一个月前,写了一篇文章,是关于MATLAB 2020b发布的事

写文章前,照着Release Note玩了一晚上最新版的App Designer,当时觉得真心不错

深度体验了一个月之后,今天我想聊一聊对MATLAB App的几点感受

总的来说,MATLAB App非常赞,远超过我之前对它的刻板印象,虽然还是存在一些缺点


1.

整个App应用开发里,最让我感到惊喜的是,网格布局uigridlayout ,其实这个功能早在2018b中就发布了

之所以很喜欢这个功能,除了能够在App Designer中快速工整地布局各个控件之外,还有一个很有意思的功能是,网格的长宽可以设置成根据窗口大小自动调整尺寸,也就是大家所看到的1x,2x等等

这么处理的一个好处是,布局在网格中相应的控件,也会因此随着窗口大小的变化进行相应的位置和大小调整,如果希望控件的位置大小不随着窗口改变,只需要把网格对应的位置改成固定的像素就好

动图封面

喜欢这个功能,倒不是因为GUI不能实现,只是实现起来没有App这么方便

在GUI里需要对窗口figure的SizeChangedFcn进行定义,当窗口大小改变时,对相应控件的大小进行调整,如果界面上控件特别多,同时还涉及到多层面板的时候,App网格布局的优势就很明显

而在MATLAB 2020b中,可变尺寸的想法也加入到了uitable 列宽定义属性中,除了可以把列宽定义成固定像素之外,也可以定义成1x,2x这样的可变宽度

动图封面

需要注意的是,uitable的这种可变列宽属性,只对App有效,也就是uifigure创建的窗口,而在figure创建的GUI窗口中是无效的,想要实现同样功能朋友,只能通过figure的SizeChangedFcn函数对表格的列宽进行更新


2.

在2020b的更新中,另一个比较有意思的功能是,能够通过代码的形式去控制scroll滚动的位置

关于页面滚动功能,基于figure创建的GUI界面是没有原生的这个功能,不过通过一个面板panel和一个滑动条slider组合,也是能够实现页面滑动的效果

其实早在2018b的App里,就已经加入了scrollable 的选项,这次最新发布的App提供了控制页面滑块位置的接口

动图封面

在这个功能基础上可以衍生出的拓展功能其实有不少,比如一个庞大的界面上有很多操作区域,通过按钮的点击能够快速定位切换到相应的操作区域,或者也可以结合窗口keypressfcn键盘响应,用特定的按键去控制页面的滑动,等等


3.

除了前面提到的两个的更新之外,剩下的更新基本上属于,意料之中、迟早会来的更新

比如,现在的App终于可以自定义窗口图标和工具栏图标了

App现在可以实现modal置顶 功能了,不过modal的置顶功能只针对MATLAB uifigure这类窗口有效,其他的软件甚至是figure,都是会覆盖modal的uifigure窗口的,还挺鸡肋的...

动图封面

App里还加入了WordWrap 选项属性,如果文字的长度超过控件长度时,勾选WordWrap后,文本就会自动换行,支持这个属性的控件有不少,大家可以体验下

动图封面

按钮button和面板组panel group终于加入了Enable选项,Enable是一个设置交互开关的属性,简单的讲就是,Enable设置为off的时候,点击按钮没反应,on的时候,才能调用定义好的回调事件

动图封面

这次的App Building 中加入了自定义控件的功能,其实也不完全算是纯粹的自定义,本质上还是通过几个基础控件、固定的回调接口以及自定义回调函数实现,然后融合在一起,通过面向对象的形式,做成所谓的自定义控件

这么处理的好处是,在之后的App开发中,可以直接使用自定义控件,不需要在控件本体中做修改,只需要定义相关的接口参数就可以了

动图封面

这次的更新还在App Designer中加入了Single Running Instance选项,勾选这个选项之后,每次运行App,都会把之前的老窗口关闭,再创建新的App窗口

用代码实现不难,delete uifigure对象就能关闭,不过用App Designer作应用开发时,这个功能确实非常必要,不然桌面上就会有关不完的窗口

动图封面

App Designer这回支持控件的堆叠顺序调整,有点像图层顺序的定义,很实用

动图封面

App Designer里还加入了工具栏的控件,算上之前加入的右键菜单功能,和菜单栏,现在的组件库算是该有的全都有了

动图封面

最后介绍一个非常酷炫的功能是,MATLAB 2020b中的比较功能,现在已经可以支持mlapp文件的对比和合并了

App的对比我倒一点也不奇怪,Simulink模型 都能对比,App更是小菜一碟

不过新增的合并功能,我只能大喊一句,爱了

因为在工具开发过程中,存在版本更新问题,不同的版本有不同的功能,而对比合并就很好的解决了不同工具版本之间功能合并的问题

有点尴尬的是,mlapp的合并不支持控件定义部分,也就是大家在代码视图中看到的灰色部分,只能合并回调事件的函数

动图封面

不过,如果大家不是选择用App Desinger来开发应用,而是直接通过写代码的形式创建uifigure工具,对比合并的功能就没有任何限制

还有一些小更新,我就不在文章里介绍了,大家可以照着App Building的Release Note在MATLAB里玩一下


4.

聊几点自己对MATLAB App Building的想法吧

就像文章最开头讲的,就目前MATLAB App来说,已经远远超过我曾经的预期

作为用户而言,如果要在GUI和App之间作选择,现在我肯定会选择App来作日常的工具开发

丰富的控件,非常舒适的界面设计,再加上极致的开发效率,无论是工程师还是科研人员,App绝对是最好的一个选择,就像产品经理群里的一个朋友"吐槽"的,App Designer非常不错,缺点就是会让自己变懒

不过,作为工具开发人员来说,我目前还是没办法从GUI向App过渡

最主要的困扰是工具兼容问题,我用MATLAB 2020b开发的App应用,如果用户用老版本的MATLAB运行工具,肯定是会报错的,但如果因此需要我用低版本的MATLAB去配合用户的话,那今天所有的测评都失去了原有的意义

再一个无法回避的问题是,App在鼠标键盘交互方面做的实在是太烂了,目前只支持uifigure窗口的鼠标键盘交互,一旦窗口失去焦点,停留在任何一个控件上,所有的keypress、buttondown就都不起作用了

不过我相信,这个问题也只是暂时的,鼠标键盘交互的功能迟早会来的

所以,对于GUI和App这道选择题,我个人建议是:

如果大家开发的工具只是给自己用,或者只是周围小范围用户使用,没有任何版本兼容问题的话,强烈大家把MATLAB升级到最新版本,用App制作工具

如果一些朋友跟我一样,平时喜欢开发工具分享给大范围的用户群体的话,目前建议还是使用GUI开发工具

以上就是今天关于新版MATLAB App Building的一个简短的分享

如果你也对MATLAB感兴趣,欢迎关注我的微信公众号“打浦桥程序员


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...

相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空