Bonjour,
j'ai un problème concernant le fait d'échanger des variables entre différentes fonctions. Je précise que je ne veux pas utiliser " global " pour définir mes variables.
J'utilise donc handles.variable = variable; guidata(hObject, handles); dans la fonction où la variable est définie, puis variable = handles.variable pour récupérer ma variable dans l'autre fonction.
Cependant j'ai un problème. Je m'explique :
Disons que j'ai 3 fonctions (pour simplifier mon interface) :
- celle de création de mon interface (je ne crée pas mes éléments avec Guide mais directement en ligne de code, c'est plus pratique)
- celle d'un pushbutton1
- celle d'un pushbutton2.
Dans la première, après avoir créé mon interface et désactivé le pushbutton2, j'écris : handles.pushbutton2 = pushbutton2; guidata(hObject, handles); pour pouvoir activer le pushbutton2 plus tard.
Dans le callback du pushbutton1, j'active le pushbutton2 après l'avoir récupéré avec : pushbutton2 = handles.pushbutton2;Dans ce même callback, je définis une variable, que je veux récupérer dans le callback du pushbutton2, disons : x=1; handles.x=x; guidata(hObject, handles);Désormais, je veux récupérer cette variable x dans le callback du pushbutton2 avec : x = handles.xLorsque je lance le programme et que je clique sur le bouton 2... Impossible d'obtenir ma variable x ! On me dit :
Je précise que le callback de mon pushbutton est de la forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Error using interface>pushbutton2_Callback (line 183) Not enough input arguments. Error while evaluating UIControl Callback
et qu'en tout début d'initialisation de mon interface il y a déjà écrit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function pushbutton1_Callback(hObject, eventData, handles) x = handles.x end
Comment puis-je remédier à mon problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 % Choose default command line output for interface handles.output = hObject; % Update handles structure guidata(hObject, handles);
Merci d'avance pour vos réponses.
Partager