matlab gui文件包中?

dyn*_*mic 9 matlab user-interface figure

我试图把一些.fig和他们相应的.m文件放在包中.

我有:

 +ui/mainWindow.fig
 +ui/mainWindow.m
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行mainWindow.figMatlab时,会从GUIDE中输出错误:

  Error using feval
  Undefined function or variable mainWindow
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我使用其完全限定名称进行调用:

 ui.mainWindow
Run Code Online (Sandbox Code Playgroud)

窗口正常显示(但所有回调都无法正常工作).

我在尝试import ui.* 之前尝试过.

请注意,我想这样做namespace.我不希望将我的整个应用程序放在Matlab的全局范围内.

sup*_*pyo 5

说明

基本问题是MATLAB GUIDE不知道包.通常,它会自动管理回调名称,保持.m.fig文件同步,每个人都很高兴.当数字在一个包中时,它无法正确更新.fig属性中的回调- 这些仍然指向非限定名称mainWindow而不是正确的ui.mainWindow.随后,所有回调都失败了.

解决方法

围绕这一个的两种方法:

  • 输出你的数字:Guide -> File -> Export.将此文件放在+ ui文件夹中.打开文件,并使用@(hObject,eventdata)ui.mainWindow执行find-replace替换@(hObject,eventdata)mainWindow的所有实例.

  • 或者,您可以直接在GUIDE内手动更新引用,而无需导出.每个按钮和元件,Right Click -> Property Inspector然后编辑"回调"字段,替换主窗口ui.mainWindow.

就个人而言,我更喜欢第一种解决方案,因为您可以使用单个find-replace命令替换所有出现的内容.