Cannot close figure using CloseFunctionRequest
14 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Adam Danz
on 18 Jun 2025
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 Comment
More Answers (0)
See Also
Categories
Find more on Migrate GUIDE Apps in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!