我正在尝试将一些.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的全局范围内。
答案 0 :(得分:5)
<强>解释强>
根本问题是 MATLAB GUIDE 不知道包。通常,它会自动管理回调名称,使 .m 和 .fig 文件保持同步,每个人都很高兴。当数字在一个包中时,它无法正确更新 .fig 属性中的回调 - 这些仍然指向非限定名称 mainWindow 而不是正确的 ui.mainWindow 。随后,所有回调都失败了。
<强>变通方法强>
围绕这一个的两种方式:
导出您的数字:Guide -> File -> Export
。将此文件放在 + ui 文件夹中。打开文件,并使用 @(hObject,eventdata)ui.mainWindow 替换 @(hObject,eventdata)mainWindow 的所有实例 find-replace EM>
或者,您可以直接在 GUIDE 中手动更新引用,而无需导出。对于每个按钮和元素,Right Click -> Property Inspector
然后编辑“回调”字段,将 mainWindow 替换为 ui.mainWindow 。
就个人而言,我更喜欢第一种解决方案,因为您可以使用单个 find-replace 命令替换所有出现的内容。