breaking for loop on callback execution
Afficher commentaires plus anciens
Original question (my own bad-coding-practice-but-super-simple solution below in the accepted answer):
Hello, I have the following code inside of a for loop:
f = figure();
done_button = uicontrol('Parent',f,'Style','pushbutton',...
'String','Save and quit','Units','normalized','Position',...
[.915 .92 .07 .03],'Visible','on', 'Callback', @quit);
if done_button.UserData
break
end
and this code for the button callback:
function quit(button, event)
button.UserData = 1;
drawnow
end
The idea is that I want to quit out of the loop when the done button is pressed, but the if statement does not work on button press. I think that's because at the time of the if statement evaluation I have not yet pressed the button, but I don't know how to fix that. I don't want to press this button every loop; only when I want to stop iterating. I looked at this and I'm not sure it applies as I'm not using GUIDE. Would really appreciate help.
4 commentaires
Voss
le 13 Déc 2021
Note that the check for the value of done_button.UserData is done immediately after done_button is created. Since no UserData is specified in the command that creates done_button, the UserData will always be empty at that point.
Vasilisa Iatckova
le 14 Déc 2021
Voss
le 14 Déc 2021
I would have to see more of your code, particularly the loop the figure and uicontrol are created in. If I have that information, I can probably advise.
Vasilisa Iatckova
le 6 Sep 2022
Réponse acceptée
Plus de réponses (1)
Walter Roberson
le 14 Déc 2021
f = figure();
done_button = uicontrol('Parent',h,'Style','pushbutton',...
'String','Save and quit','Units','normalized','Position',...
[.915 .92 .07 .03],'Visible','on', 'Callback', @quit, ...
'UserData', 0);
while ~done_button.UserData
stuff
end
1 commentaire
Vasilisa Iatckova
le 14 Déc 2021
Modifié(e) : Vasilisa Iatckova
le 14 Déc 2021
Catégories
En savoir plus sur Graphics Performance dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!