3

我正在使用 Matlab Guide 制作用户界面。在此界面中,我运行绘制各种图形的 .m 文件。经过分析,我想在不关闭 GUI 的情况下关闭图形。如果我使用全部关闭;包括 GUI 本身在内的所有图表都会关闭。但是,如果我使用close; GUI 关闭而不关闭图形。我该如何解决这个问题?

4

2 回答 2

1

来自MATLAB Central的这个答案似乎是最有希望的:

fh=findall(0,'Type','Figure')

获取所有打开图形的句柄。您可以使用标签或其他东西将您的 gui 与其他图形区分开来。然后通过传递他们的句柄关闭所有其他人。

正如 Hoki 在评论中所建议的那样,您可能可以跟进:

close(setxor(fh,the‌​MainGuiHandle))
于 2016-08-16T11:14:41.133 回答
1

假设您的 GUI 中没有任何其他axes对象,以下将起作用:

%// find all handles of axes (graphs)
axh = findall(groot,'type','axes')
%// get handles of parent figures containing graphs
fxh = get(axh,'parent')
%// close figures containg axes
close(fxh{:})

它将删除包含axes对象的所有子图形。但是我坚持我的建议:为所有图形窗口分配独特的句柄并明确关闭它们。

于 2016-08-16T11:22:17.060 回答