我正在尝试在包装中放入一些.fig
及其对应的.m
文件。
我有:
+ui/mainWindow.fig
+ui/mainWindow.m
但是,当我尝试运行
mainWindow.fig
时,Matlab从GUIDE打印错误: Error using feval
Undefined function or variable mainWindow
有趣的是,如果我使用其完全限定的名称进行调用:
ui.mainWindow
该窗口将正常显示(但所有回调均无法正常工作)。
在运行它之前,我尝试过
import ui.*
。请注意,我想这样做是
namespace
。我不想将我的整个应用程序放在Matlab的全局范围内。 最佳答案
说明
根本的问题是MATLAB GUIDE不知道软件包。通常,它会自动管理回调名称,使.m和.fig文件保持同步,并且每个人都很高兴。当图形位于包中时,它将无法正确更新.fig属性中的回调-这些回调仍指向非限定名称mainWindow而不是正确的ui.mainWindow。随后,所有回调均失败。
解决方法
解决这一问题的两种方法:
Guide -> File -> Export
。将此文件放在您的+ ui文件夹中。打开文件,并执行查找替换,将@(hObject,eventdata)mainWindow的所有实例替换为@(hObject,eventdata)ui.mainWindow。 Right Click -> Property Inspector
然后编辑“回调”字段,用ui.mainWindow替换mainWindow。 就个人而言,我更喜欢第一个解决方案,因为您可以用单个find-replace命令替换所有出现的事件。
关于Matlab gui文件放在一个包中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13824909/