发布评论
评论(6)
截至 2015 年 6 月,GUIDE 比您想象的还要糟糕。配置 GUI 的效率非常低,而且 bug 非常多。绝对不是专业级别的。 GUIDE,我怎么鄙视你呢?让我列举一下方法:
1) 创建 GUI 时的输入错误不会被标记。由于潜伏着这个未通知的错误,您可能会工作几个小时。当您点击“保存”时,GUIDE 将不会保存您的工作。因此,GUIDE 违反了任何软件包的首要指令:您不应丢失用户的工作或数据。我不敢相信 Mathworks 居然发布了这么糟糕的东西。
2)帮派复制是不确定的。假设您有一个计算早餐效果的程序。您可以将小时、分钟、碳水化合物的数量作为可编辑框。您有作为静态文本的标签。午餐和晚餐你想要同样的东西。选择全部。 Ctrl-C。将光标指向其他位置,然后按 Ctrl-V。什么也没发生。不,等等,大约30秒后,粘贴出现了。但如果你已经在做别的事情了,那么……试着弄清楚到底发生了什么。
3)即使是帮派行动也是不确定的/奇怪的/超自然的/着魔的。假设您想上下移动午餐的那一行?强调。使用箭头键移动它。成功!但是等等!大约五秒钟后,文本和编辑框开始移回原始位置!无需干预!它着魔了!
我使用 GUIDE 创建了一个相当复杂的 GUI。比应有的或可能的更多的心痛和麻烦。如果有运行 JAVA/Python/Julia 的免费软件替代品,我不会启动另一个需要 GUI 的 MATLAB 项目。节省你的面团!
就我个人而言,我发现 GUIDE 对于快速简单的 GUI 和学习如何创建 GUI 来说足够好,但现在我通常更喜欢以编程方式创建 GUI。这可以更好地控制内容。对我来说,关键是使用 UI 元素的 UserData 属性来存储任何有用的数据,包括您要更新的 UI 对象的句柄。
但如果您想要一些聪明的东西,那么您将不得不求助于基于 Java 或 .NET 的东西。
此外,重要的是要记住 MATLAB 最擅长什么,而 GUI 并不是强项。如果您使用 GUI 创建效果更好的编程语言,那么您将不得不在其他方面做出妥协,例如处理数组和矩阵数据的易用性。
编辑:GUI 布局@Mikhail 链接的工具箱 看起来非常有用。
我一直在 MATLAB 中进行 GUI 编程。
据我所知,GUIDE 使 GUI 编程变得非常方便。正如您所说,您实际上不必费心编写任何按钮等,只需排列按钮并填充 m 文件即可。在按钮中,您可以通过将属性“Visible”设置为“on”或“off”来处理可见性。
我尝试了两种方法:手动编写 gui 和使用 GUIDE 编写。
我的印象是你真的必须投入其中。一旦你了解了句柄的概念(这是 matlab guis 的主要内容),你就明白了。
首先尝试编写一个简单的 GUI,不要从您的项目开始。了解句柄和检查器在 MATLAB 中的工作方式以及如何设置值的属性。找出可以在 GUI 中存储数据的位置以及如何在其他窗口中检索数据(在窗口之间传递句柄)。
我想就是这样吧!在 MATLAB 中进行 GUI 编程可能很难开始,但是一旦您弄清楚了我上面提到的事情,它就会变得非常简单。
我来晚了,但想加 0.02 美元。正如您提到的,GUI 设计不是 MatLab 的强项。然而,它可以做很多事情。如果您有任何具体问题,我很乐意回答。另外,要意识到它是基于 java swing 库构建的,因此您可以实际利用这些功能。但是,这些功能没有记录在案。有一本名为 Undocumented Secrets of MatLab 的书,对底层的 swing 组件进行了相当不错的讨论。
MatLab GUI 有一些怪癖,但如果您能克服这些怪癖,那么您就会喜欢它。此外,正如前面提到的,更困难的障碍之一是句柄的概念。一旦你掌握了这个概念,你就已经成功了 90%。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
Fig 文件是一个 MAT 文件,其中包含 gui 元素列表以及您在 GUIDE 中设置的属性。
为元素分配一个标签,您可以使用
handles.mytag
访问它,例如set(handles.mypanel, 'visible', 'off')
您无法将这些自动生成的 m 文件合并为一个,为什么还要这样做呢?为每个向导页面保留一个 .fig 和 .m 文件!
如果您不手动定位元素而是使用布局管理器,那么直接使用
uicontrol
也不错。您可以在此处和此处。如果您希望 GUI 能够很好地调整大小,那么布局管理器是唯一的方法。专业的 GUI 编程并不容易,在我看来甚至是最困难的部分。
除了 MATLAB GUI 之外,我还经常使用 Java Swing 和 .NET WPF,IMO MATLAB GUI 更容易,你可以用 10%(学习)的努力完成 90% 当然,你仍然需要时间来习惯它。
是的,GUIDE 不是最好的解决方案,但可能是快速创建 GUI 的最佳技术。
这些 GUI 是利用 MATLAB GUI 特定细节的黑客攻击,例如视觉分隔符是白色 uicontrol 上的长“__________”黑色文本,该控件只有两个像素高,或者使用 html 工具提示中的不同颜色。
毕竟您可以在 MATLAB GUI 中使用 Java Swing(因为它实际上是从 Swing 派生的)
是的,在你的情况下保持它非常简单,只是功能,不要考虑花哨的东西!
FIG file is a MAT file containing list of gui elements with properties you set in GUIDE.
Assign a Tag to the element, you can access it using
handles.mytag
likeset(handles.mypanel, 'visible', 'off')
You can not combine these automatically generated m-files into one, why would you want to anyway? Keep a .fig and .m file for each wizard page!
Using
uicontrol
directly is not bad if you do not position elements manually but use a layout manager. You can see some here and here. If you want you GUI to be nicely resizable then layout manager is the only way to do it.Professional GUI programming is not easy, IMO is even the most difficult part at all.
Besides MATLAB GUI I have used both Java Swing and .NET WPF a lot, IMO MATLAB GUI is much easier, you can do 90% with 10% (learning) effort Sure, you still need time to become accustomed to it.
Yes, GUIDE is not the best solution but is probably the best technique to quickly create an GUI.
These GUI's are hacks exploiting MATLAB GUI particular details like visual separator being a long '__________' black text on a white uicontrol which is only two pixel high or different colors in tooltip by using html.
And after all you can use Java Swing in a MATLAB GUI (because it is actually derived from Swing)
Yes, in your case keep it very simple, just the functionality, do not think about fancy stuff!