在X上按下鼠标按钮时关闭图形窗口

时间:2012-10-21 18:03:22

标签: matlab user-interface mouseevent mouse

我有一个运行几分钟的GUI。 在这个GUI中,我有使用直线显示的图像 -

     axes('Position',[.3 .25 .3 .5]);
     image(imcell{1,2});

问题是,即使我按下左上边缘的X使用鼠标关闭窗口,也会打开一个新窗口,显示这些图像直到结束。

那么如何在不获取新窗口的情况下打破GUI工作(关闭它)。

我想它的类似于“windowbuttonpressfcn”或“buttonpressfcn”,但是 -

  1. 我不认为按下x被认为是一个新闻,因为它在窗外......
  2. 我尝试使用get(hobject,'currentpoint'),但它没有用,我认为那不是那种方式..

1 个答案:

答案 0 :(得分:2)

调用axes会弹出一个新窗口,因此如果您继续在代码中打开新数字,关闭它将无济于事。您必须检查窗口/图形是否已关闭,并在这种情况下跳过绘图,例如

% create the figure somewhere in the code
h=figure(1);  

% ... 

% your image processing loop
while(do_work)
    if ishandle(h)
       axes('Position',[.3 .25 .3 .5]);
       image(imcell{1,2});
    end
end

如果您现在关闭图形窗口,ishandle(h)将返回0并且图形将不会显示。

当图形关闭时,DeleteFcn事件被触发。如果要在关闭图形时执行自定义作业,则应将事件处理程序连接到图形句柄:

set(h, 'DeleteFcn', @my_close_function)

在您的关闭功能中,您可以执行清理工作,包括停止程序中正在进行的任何过程。