Passage de variables entre plusieurs interfaces
Bonjour,
Tout d'abord je vais essayer de vous présenter au mieux mon projet et j'expliquerai mon problème par la suite.
J'ai crée 3 interfaces Matlab :
1) La première contient un PopUpMenu et un PushButton. On vient sélectionner la valeur souhaitée dans le PoPUpMenu et on appuie sur le PushButton pour passer à la seconde interface.
Une fois que le PushButton est enclenché, je ferme la première interface et j'ouvre la seconde.
2) La seconde interface comprend un StaticText, un PopUpMenu et 2 PushButton. Le StaticText prend la valeur sélectionnée dans le PopUpMenu de la première interface. En fonction de ce que que contient le StaticText, le PopUpMenu de la seconde interface est crée (je vous passe l'affichage de différentes images, cela n'est pas un problème). Si je veux revenir dans l'interface précédente j'appuie sur un PushButton 'BACK' et si je veux passer à la troisième interface j'appuie sur le PushButton 'CONTINUE'.
3) La troisième interface contient un StaticText qui prend la valeur de ce qu'il y a dans le PopUpMenu de la seconde interface, ainsi qu'un PushButton 'BACK' pour revenir à l'interface précédente.
J’espère avoir était assez claire :?
Pour passer la variable du PopUpMenu de l'interface 1, au StaticText de l'interface 2, je n'ai pas de problèmes j'utilise les lignes de code suivantes :
Dans le code de l'interface 1 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
function popupmenu1_Callback(hObject, eventdata, handles)
contents = get(hObject,'string')
VARIABLE = contents{get(hObject,'Value')}
setappdata(handles.popupmenu1,'string',VARIABLE); % mise en mémoire de ce qu'il y a dans la liste déroulante
function pushbutton2_Callback(hObject, eventdata, handles)
VARIABLE = getappdata(handles.popupmenu1,'string'); % la variable 'VARIABLE' prend la valeur de ce qu'il y a dans la liste déroulante
close % fermeture de l'interface active
INTERFACE2(VARIABLE) % ouverture de l'interface 'INTERFACE2' |
Dans le code de l'interface 2:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
function INTERFACE2_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for INTERFACE2
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
VARIABLE = varargin{1}; % amener la variable 'VARIABLE' du GUI 'INTERFACE1'
set(handles.text1,'string',VARIABLE); % écrire le contenu de la variable 'VARIABLE' dans le static text |
Jusque là, pas de problème, je fais la même chose pour transférer le contenu du PopUpMenu de l'interface 2 dans le StaticText de l'interface 3.
Le problème intervient lorsque je suis dans l'interface 3 et je que je souhaite revenir dans l'interface 2 (avec le PushButton 'Back'), le message d'erreur suivant apparaît :
Code:
1 2 3 4 5 6
|
Index exceeds matrix dimensions.
Error in INTERFACE2>INTERFACE2_OpeningFcn (line 61)
VARIABLE = varargin{1}; % amener la variable 'VARIABLE' du GUI 'INTERFACE1' |
J'imagine que cela est du au fait que en ré-ouvrant l'interface 2 à partir de l'interface 3 je n'amène aucune variable, mais comment résoudre ce problème ?
Merci bien !