查看单个帖子
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在Matlab中系统更改多个.fig文件

我想浏览存储了许多Matlab GUI(.fig文件及其相关的.m文件)的目录,并对其进行系统地更改。对于每个,我想搜索一个特定的弹出菜单,如果存在,则删除一些特定选项。

我通常使用get()和set()或类似的函数来摆弄GUI,但是这些函数需要句柄,而且在不运行GUI时我也不知道如何获取句柄,而且我也不知道如何保存变化。

如果我将.fig作为文本打开,则无法理解。

我正在考虑一次在指南 (Matlab的GUI开发环境)中打开每个窗口,并手动进行更改,但确实希望避免。我正在谈论数十个文件,将来我的操作可能必须更改。

也许会有一种方法可以从命令行控制向导 ?还是其他解决方案?


回答:
您可以使用hgload或openfig加载.fig文件。这两个函数都返回图形的句柄。

一旦有了图形的句柄,就可以使用findobj来获取弹出菜单的句柄。然后正常set并get以更改菜单的选项,然后使用hgsave保存修改的图形。

例如:

f = hgload('file.fig'); menuH = findobj(f, 'Type', 'popup'); set(menuH, 'String', new_options); hgsave(f, 'file.fig');

更多&回答...
poster 当前离线   回复时引用此帖