save gui handles between uiwait/uiresume calls

1 vue (au cours des 30 derniers jours)
River Rock
River Rock le 18 Mai 2015
Commenté : River Rock le 19 Mai 2015
Hi,
I'd like to implement the following behaviour in my gui app: - start iterating through a for loop and compute an array - at the end of each loop, pause and give control to the user, which should be able to manually remove some elements from the array - resume execution
To do it, i write the array to the handles data structure:
handles.data.myArr = myArr;
guidata(hObject,handles);
then call uiwait:
uiwait;
and then update the variable:
myArr = handles.data.myArrTmp;
The callback that creates myArrTmp first gets the initial array from the handles:
myArrTmp = handles.data.myArr;
updates it according to user's choice, then writes it back to the handles
handles.data.myArrTmp = myArrTmp;
guidata(hObject, handles);
and finally calls uiresume:
uiresume;
When the control is returned to the main loop, it seems that the handles are reset, such that after uiwait, handles.data.myArrTmp does not exist.
How can I make the data inside the handles structure persist after calling uiresume? Is there a better method that could implement the same behaviour ?
Thank you.

Réponses (1)

Walter Roberson
Walter Roberson le 19 Mai 2015
The routine needs to call guidata() to retrieve the changed version of the handles structure.
  1 commentaire
River Rock
River Rock le 19 Mai 2015
Hi Walter,
Thanks for the reply. I do call guidata, but the handles are lost when uiresume is called.
Does uiwait block the execution of the current (parent) callback or the one of the entire gui app?
I am still able to debug inside the new callback (while uiwait is active).

Connectez-vous pour commenter.

Catégories

En savoir plus sur Interactive Control and Callbacks dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by