Cannot close figure using CloseFunctionRequest

조회 수: 14 (최근 30일)
Simon Aldworth
Simon Aldworth 2025년 6월 18일
댓글: Adam Danz 2025년 6월 18일
Hello,
I have created a gui using figure and a collection of uicontrols but I now find that I can't close the figure once I'm done with it. I can press the cross in the top right corner and the code runs satisfactorily but the figure won't disappear. Close(gcf) won't work but delete(gcf) will. The code was borrowed from the answer to this post: Answer, but here's my code stripped out to leave only the bits that I think are relevant:
function UserInput_short(S)
hfig = figure('CloseRequestFcn',@close_req_fun);
uiwait(hfig)
function close_req_fun(~,~)
uiresume
end
end
If I run the above I get a blank figure which I can't close using the cross at top right. What am I doing wrong?
Thanks.

채택된 답변

Adam Danz
Adam Danz 2025년 6월 18일
The CloseRequestFcn defines what to do when someone tries to close the figure. If you override the CloseRequestFcn then instead of simply closing, the code you wrote will run.
Option 1 is to include the delete command in the callback.
function close_req_fun(fig,~)
% [ define your custom behaviors ]
delete(fig)
end
Option 2 is to include a close button in your app that can be used to close the figure instead of the [x] menu button.
Option 3 is to remove the closeRequestFcn definition completely if you want the default closure behavior.
The reason the uiresume is in included in that answer is becuase the dialog also contains a uiwait so the [x] menu button can be used to resume execution and then delete the figure.
  댓글 수: 1
Adam Danz
Adam Danz 2025년 6월 18일
From the Answer you mentioned
  1. The figure waits here indefinitely
  2. By pressing [x] execution resumes
  3. The figure is deleted

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

태그

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by