我创建了一个类管理的 GUI,其中定义了以下方法
function h = make_figure(this)
h = figure('CloseRequestFcn',@this.close_figure);
this.openFigures(end+1) = h;
end
function close_figure(this, src, event)
this.openFigures(this.openFigures == src) = [];
delete(src);
end
在 GUI 的整个生命周期中,借助上述方法可以创建和关闭图形。现在奇怪的部分...
如果我在 MATLAB 的“当前文件夹”窗口中双击一个图形文件,例如(myfigure.fig),然后尝试关闭它(当 GUI 仍然存在时)close_figure
,那么 GUI 类的方法会运行,尽管它不是用 of 创建h = figure('CloseRequestFcn',@this.close_figure);
的make_figure
方法!!!这是第一个奇怪的部分。第二个奇怪的部分是,尽管执行了代码的无意部分,但它不应该产生问题,因为命令this.openFigures(this.openFigures == src) = [];
实际上this.openFigures
保持不变,实际上close_figure
所做的一切delete(src)
都是可取的。尽管有上述情况,但我的程序在上述情况发生后表现......很奇怪。
我注意到,如果我figure
在命令窗口中点击然后关闭它,一切正常,该close_figure
方法不会执行。只有在打开由 GUI 类创建的 .fig 文件时,才会出现问题。
有任何想法吗?