我想浏览一个目录,其中存储了许多Matlab GUI(.fig文件及其相关的.m文件)并系统地更改它们。对于每个,我想搜索某个弹出菜单,如果存在,删除一些特定的选项。
我通常使用get()和set()或类似函数来操作GUI,但这些函数需要句柄,我不知道如何在不运行GUI时获取句柄,而且我也不知道如何保存更改。
如果我打开.fig作为文本,则无法理解。
我正在考虑在指南(Matlab的GUI开发环境)中逐一打开并手动更改它,但我们真的想避免它。我说的是几十个文件,我的行动可能会在将来发生变化。
也许有办法从命令行控制指南?还是另一种解决方案?
答案 0 :(得分:4)
您可以使用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');
答案 1 :(得分:0)
gcf()在open()之后立即获取句柄,并且可以通过编程方式完成许多数字。