Cannot close figure using CloseFunctionRequest
조회 수: 14 (최근 30일)
이전 댓글 표시
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.
댓글 수: 0
채택된 답변
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
