MATLAB GUI Pushbutton Click Runs Callback Twice
Show older comments
I'm working on improving an inherited GUI to run some calculations, and it requires the user to click a pushbutton to open a browse for an input file (uigetfile()), select/import into MATLAB, and use the data within to do some number-crunching. I've made some modifications to it in GUIDE, and somehow something changed such that every pushbutton click results in its respective callback function being run twice. For example, now the user is prompted to select the input file twice; after it's successfully selected and imported, the command is run again starting with uigetfile(). The calculation is run twice, it saves the results to an external .csv file twice, etc., etc. Everything still runs fine, but every action is repeated.
I haven't made any changes to the callback functions, just the GUI/buttons. I'm not sure what's causing each function to be run twice. There do not appear to be any duplicate buttons on top of one another somehow each being clicked once to run the function twice.
I'm new to GUIDE and so I'm not sure how to effectively debug the tool. Any help is appreciated.
Thanks!
5 Comments
Rik
on 4 May 2020
And is why I discourage everyone to use GUIDE for anything that takes longer than 5 minutes to create.
Can you attach the m file and fig to your question so we can have a look?
Garrett Beebe
on 4 May 2020
Rik
on 4 May 2020
That is unfortunate.
The call to guidata stores (or retrieves) a struct that is saved with the GUI figure. As the callback you will notice there is something like @(h,e) Button1Callback(h,e,guidata(h)).
I think the only viable strategy would be to put a breakpoint at the start of a callback function and then execute it line by line until you find where it starts repeating.
Garrett Beebe
on 4 May 2020
Rik
on 4 May 2020
Answers (1)
Categories
Find more on Interactive Control and Callbacks 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!