MATLAB gui创建者GUIDE是否像我想的那样糟糕?还有其他选择吗?

whe*_*rce 18 matlab user-interface wizard matlab-guide

我一直试图在MATLAB中组合一个gui并且遇到了很大困难.以下是关于我的程序的一些背景知识:我想创建一个向导来引导用户完成图像分析过程.向导将提示用户输入,然后在按下标有"下一步"的按钮后执行图像处理操作,依此类推.从阅读MATLAB帮助我相信gui创建有两种方法:1.用代码行写一个gui.2.使用GUIDE.

我认为GUIDE会有最浅的学习曲线.起初这个过程是直截了当的.我可以拖放按钮和文本框并轻松排列.我的计划是安排一系列面板,按钮和文字等,按下"下一步"按钮后,按顺序显示.就在这里,我变得难过了.

一旦我使用GUIDE保存面板,MATLAB就会创建一个.m文件和一个.fig文件.通过.m文件读取,我发现它为我提供了编写回调代码的空间,但没有其他的东西..fig文件是二进制文件,因此我不敢编辑它.我想知道如何控制对象,例如如何设置面板的可见性?此外,我必须分别创建向导的每个面板.我希望我可以手动将.m文件合并到一个wizard.m包装文件中,但我不认为这是正确的方法(至少对我来说,因为我看不到怎么做).

代替使用GUIDE我已经看过使用"uicontrol"函数创建guis的示例.这种方法对我来说似乎很乏味,因为我必须手动编码每个按钮的位置和大小以及默认值.也许这是最好的方法,但它吓倒了我.

因此,我对MATLAB因其看似笨重的gui工具感到不满,而且我对自己因为缺乏克服这个障碍而感到不满.

我已经看到在MATLAB中创建了一些花哨的guis并且我自己尝试了这个并且缩短了我对它们的存在感到困惑.无论是谁制作它们都是特殊的MATLAB用户(我不是),或者我错过了一些明显的东西,并且可以使用一些帮助.我现在正在质疑gui是否值得付出努力.我不认为自己正在探索类似QT的东西,因为将MATLAB代码嵌入其他语言(如python)的额外挑战.

有没有人就这个问题提出建议?任何人都可以指出我哪里出错或为什么我有这样的困难?

Mik*_*ail 20

.fig文件是二进制文件,因此我不敢编辑它.

FIG文件是一个MAT文件,其中包含gui元素列表,其中包含您在GUIDE中设置的属性.

如何设置面板的可见性?

为元素分配标签,您可以使用handles.mytaglike 来访问它set(handles.mypanel, 'visible', 'off')

此外,我必须分别创建向导的每个面板.我希望我可以手动将.m文件合并到一个wizard.m包装文件中,但我不认为这是正确的方法(至少对我来说,因为我看不到怎么做).

您无法将这些自动生成的m文件合并为一个,为什么还要这样?为每个向导页面保留一个.fig和.m文件!

代替使用GUIDE我已经看过使用"uicontrol"函数创建guis的示例.这种方法对我来说似乎很乏味,因为我必须手动编码每个按钮的位置和大小以及默认值.也许这是最好的方法,但它吓倒了我.

uicontrol如果不手动定位元素但使用布局管理器,则直接使用也不错.你可以在这里这里看到一些.如果您希望GUI可以很好地调整大小,那么布局管理器是唯一的方法.

有没有人就这个问题提出建议?任何人都可以指出我哪里出错或为什么我有这样的困难?

专业的GUI编程并不容易,IMO甚至是最困难的部分.

除了MATLAB GUI我已经使用了Java Swing和.NET WPF很多,IMO MATLAB GUI更容易,你可以用10%(学习)努力做90%当然,你还需要时间来适应它.

因此,我对MATLAB因其看似笨重的gui工具感到不满,而且我对自己因为缺乏克服这个障碍而感到不满.

是的,GUIDE不是最好的解决方案,但可能是快速创建GUI的最佳技术.

我已经看到在MATLAB中创建了一些花哨的guis并且我自己尝试了这个并且缩短了我对它们的存在感到困惑.

这些GUI是利用MATLAB GUI特定细节的黑客,例如视觉分隔符是白色uicontrol上的长'__________'黑色文本,使用html在工具提示中只有两个像素高或不同的颜色.

毕竟你可以在MATLAB GUI中使用Java Swing(因为它实际上是从Swing派生的)

我现在正在质疑gui是否值得付出努力.

是的,在你的情况下保持它非常简单,只是功能,不要考虑花哨的东西!


Wiz*_*Boz 6

截至2015年6月,指南比您想象的要糟糕.配置GUI的效率非常低,因为它太糟糕了.绝对不是专业级.指南,我该如何鄙视你?让我列举一下方法:

1)不标记创建GUI时的输入错误.随着潜伏的这个未公布的错误,您可以工作数小时.当您点击"保存"时,GUIDE将无法保存您的工作.因此,GUIDE违反了任何软件包的主要指令:您不会丢失用户的工作或数据.我无法相信Mathworks实际上发布了这么糟糕的东西.

2)帮派复制是不确定的.假设您有一个计算早餐效果的程序.你有小时,分钟,碳水化合物的数量作为可编辑的盒子.您将标签作为静态文本.午餐和晚餐你想要同样的东西.全选.按Ctrl-C.将光标指向其他位置,然后按Ctrl-V.什么都没发生.不,等待,大约30秒后,粘贴出现.但是,如果你已经做了别的事情,那么......试着搞清楚到底发生了什么.

3)即使是帮派动作也是如此/奇怪/超自然/拥有.假设您想要在午餐时上下移动该行?突出.使用箭头键移动它.成功!可是等等!大约五秒钟后,文本和编辑框开始移回原始位置!没有干预!它被附身了!

我使用GUIDE创建了一个相当复杂的GUI.比它应该 - 或可能 - 更多的心痛和麻烦.鉴于运行JAVA/Python/Julia的免费软件替代品,我不会启动另一个需要GUI的MATLAB项目.保存你的面团!

  • 我打算提出与OP一样的问题来试图证明我在创作GUIDE时被拖入的痛苦.我正在使用R2015a并且认为GUIDE开发的所有痛苦的日子现在已经整理好了.这绝对是一个漫长的过程,但用户体验很糟糕.就像你在尝试复制多个元素时说的那样,我经常发现自己不得不咨询对象浏览器,以确保没有任何东西在我身后偷偷摸摸.没有响应的保存和对象对齐,这是一个痛苦的痛苦> < (2认同)
  • 我看到与第2点相同的行为当进行多项选择*对齐对象*命令时,它让我疯狂并浪费了大量时间.如果这不是Matlab的官方GUI创建工具,我很久以前就会废弃它.我实际上是试图采用一个人善意但不灵活的编程生成的GUI并将业务逻辑中的表示分离出来,这样我就可以重用业务逻辑,但我可能只是放弃并修复脚本中的布局问题而不是通过指南,如果这拖延另一天. (2认同)
  • 这是更时髦的行为!因此,当您进行"漫长"操作时,实际上会调用等待光标,但它只能在菜单和工具栏上看到,而不能在GUIDE的设计工作区中看到.我现在已经养成了采样的习惯,如果我因为在"可通信区域"上移动光标并等待它直到完成而无法响应,我就会陷入等待状态.希望这能消除我所有的挫败感. (2认同)